Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Microsoft Office и VBA программирование > Microsoft Office Excel
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 09.03.2010, 11:40   #1
Spring_me
Пользователь
 
Аватар для Spring_me
 
Регистрация: 09.03.2010
Сообщений: 10
По умолчанию Всплывающее окно, показывающее списком содержание ячеек другого листа

Уважаемые!
Подскажите, пожалуйста, как лучше реализовать всплывающее окно, которое бы показывало списком содержание ячеек другого листа
Spring_me вне форума Ответить с цитированием
Старый 09.03.2010, 12:09   #2
EducatedFool
Программист VBA
СуперМодератор
 
Аватар для EducatedFool
 
Регистрация: 13.07.2008
Сообщений: 6,856
По умолчанию

В Excel есть инструмент "камера" - может, он подойдёт?

Окно не всплывающее, но вы сможете видеть содержимое нужных диапазонов с других листов.

См. пример:

EducatedFool вне форума Ответить с цитированием
Старый 09.03.2010, 13:18   #3
Spring_me
Пользователь
 
Аватар для Spring_me
 
Регистрация: 09.03.2010
Сообщений: 10
По умолчанию

Посмотрела..
Ммм... Дело в том, что показать содержание ячеек нужно по нажатию кнопки. Кнопку надо разместить в ячейке основной таблицы. Появившийся список - это справочная информация. Поэтому хотелось бы именно всплывающее окно. А потом этот список убирать хотелось бы нажатием кнопки типа "закрыть"..

Пока не представляю, как можно с использованием этого инструмента "красиво" представить и убрать такой список..
Spring_me вне форума Ответить с цитированием
Старый 09.03.2010, 14:19   #4
EducatedFool
Программист VBA
СуперМодератор
 
Аватар для EducatedFool
 
Регистрация: 13.07.2008
Сообщений: 6,856
По умолчанию

Можно справочную информацию выводить формулами - плюс простейший макрос.
Есть ещё десяток других вариантов.

Не увидев вашего файла, и не поняв, что вы подразумеваете под "всплывающим окном" (нарисуйте, хотя бы, как оно должно выглядеть), вряд ли вам кто-нибудь сможет помочь...
EducatedFool вне форума Ответить с цитированием
Старый 09.03.2010, 14:51   #5
Spring_me
Пользователь
 
Аватар для Spring_me
 
Регистрация: 09.03.2010
Сообщений: 10
По умолчанию

Хорошо..
Итак, по нажатию кнопки СТМ на первом листе образца, хотелось бы видеть
всплывающее окно, как на рисунке (оно там, правда, от руки )
Изображения
Тип файла: png Sanple.png (7.5 Кб, 398 просмотров)
Вложения
Тип файла: zip Sample.zip (10.3 Кб, 28 просмотров)
Spring_me вне форума Ответить с цитированием
Старый 09.03.2010, 17:05   #6
EducatedFool
Программист VBA
СуперМодератор
 
Аватар для EducatedFool
 
Регистрация: 13.07.2008
Сообщений: 6,856
По умолчанию

Попробуйте такой вариант: http://excelvba.ru/XL_Files/Sample__...__19-05-37.zip
EducatedFool вне форума Ответить с цитированием
Старый 10.03.2010, 09:12   #7
Spring_me
Пользователь
 
Аватар для Spring_me
 
Регистрация: 09.03.2010
Сообщений: 10
По умолчанию

Cпасибо огромное, это очень близко к желаемому.
Но я не разобралась, каким образом это сделано. Можно небольшую инструкцию?
То же самое я хочу сделать для других столбцов..
Spring_me вне форума Ответить с цитированием
Старый 10.03.2010, 10:47   #8
EducatedFool
Программист VBA
СуперМодератор
 
Аватар для EducatedFool
 
Регистрация: 13.07.2008
Сообщений: 6,856
По умолчанию

Алгоритм описывать достаточно долго.
Мне проще было переделать макрос))

Код:
Private Sub ToggleButton1_Change()
    On Error Resume Next
    Me.Shapes("sha1").Visible = Me.ToggleButton1.Value
    If Me.ToggleButton1.Value Then
        Application.ScreenUpdating = False
        a = ActiveCell.EntireColumn.Cells(5).Resize(6).Offset(-1, -1).Address
        With Me.Shapes("sha1")
            .Select
            Selection.Formula = "СТМ!" & a
            .Top = ActiveCell.Next.Top
            .Left = ActiveCell.Next.Left
        End With
        ActiveCell.Select
    End If
End Sub
Теперь у вас одна кнопка на все столбцы.

Выделяете любую ячейку в любом столбце, жмёте кнопку, - и справа от этой ячейки отображается информация с другого листа (из соответствующего столбца)

Проверяйте: http://excelvba.ru/XL_Files/Sample__...__13-17-31.zip


Можно сделать и без кнопки - "справочная информация" будет появляться автоматически при выделении ячеек:
Код:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    If Target.Cells.Count = 1 And Not Intersect([таблица], Target) Is Nothing Then
        Me.Shapes("sha1").Visible = -1
        Application.ScreenUpdating = False
        a = ActiveCell.EntireColumn.Cells(5).Resize(6).Offset(-1, -1).Address
        With Me.Shapes("sha1")
            .Select
            Selection.Formula = "СТМ!" & a
            .Top = ActiveCell.Next.Top
            .Left = ActiveCell.Next.Left
        End With
        ActiveCell.Select
    Else
        Me.Shapes("sha1").Visible = 0
    End If
End Sub
Пример в виде файла: http://excelvba.ru/XL_Files/Sample__...__13-27-16.zip
Мне такой вариант нравится даже больше.


PS: Вопрос спецам по VBA: как автофигуре назначить формулу, не выделяя её?
Макрорекордер пишет 2 варианта:
Код:
Sub Макрос1()
    ActiveSheet.Shapes("sha1").Select
    ExecuteExcel4Macro "FORMULA(""=R7C2:R9C3"")"
End Sub

Sub Макрос2()
    ActiveSheet.Shapes("sha1").Select
    Selection.Formula = "СТМ!B3:B6"
End Sub
А как сделать без Select-а?

Последний раз редактировалось EducatedFool; 10.03.2010 в 11:29.
EducatedFool вне форума Ответить с цитированием
Старый 10.03.2010, 15:15   #9
Spring_me
Пользователь
 
Аватар для Spring_me
 
Регистрация: 09.03.2010
Сообщений: 10
По умолчанию

Спасибо..Но все же нужно сделать кнопку для каждого столбца...
Пожалуйста, покажите, как адаптировать макрос для каждой кнопки..

И еще вопрос.. Как можно реализовать показ данных из конкретной ячейки из другого листа при наведении курсора на ячейку основного листа.
То есть чтобы это выглядело, как стандартное примечание к ячейке. Но в моем случае, это должно быть привязано к определенной ячейке, а не заноситься вручную в примечание.

На моем примере. При наведении курсора на ячейку B5 на основном листе, должно показываться как в примечании значение ячейки B5 на 3-ем листе, т.е. 5..
Вложения
Тип файла: zip Sample__new.zip (16.6 Кб, 32 просмотров)
Spring_me вне форума Ответить с цитированием
Старый 10.03.2010, 15:21   #10
The_Prist
Участник клуба
 
Аватар для The_Prist
 
Регистрация: 17.07.2009
Сообщений: 1,088
По умолчанию

Цитата:
Сообщение от EducatedFool Посмотреть сообщение
PS: Вопрос спецам по VBA: как автофигуре назначить формулу, не выделяя её?
Код:
With Me.DrawingObjects("sha1")
      .Visible = -1
      a = ActiveCell.EntireColumn.Cells(5).Resize(6).Offset(-1, -1).Address
     .Formula = "СТМ!" & a
     .Top = ActiveCell.Next.Top + 3
     .Left = ActiveCell.Next.Left + 3
End With
WebMoney - R298726502453; Яндекс.Деньги - 41001332272872
www.excel-vba.ru
The_Prist вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Компоненты всплывающее окно Altera Компоненты Delphi 9 20.10.2014 19:10
Копирование содержание ячеек и их ширины tae1980 Microsoft Office Excel 5 14.08.2009 15:25
всплывающее окно niziriska Общие вопросы Delphi 5 08.07.2009 13:27
Всплывающее окно EdNovice Общие вопросы Delphi 2 09.07.2008 18:04
[?] Всплывающее окно как в QIP lazutov Общие вопросы Delphi 2 21.04.2008 09:12