Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
||
ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
[3.142.200.226] |
|
Страницы: (2) [1] 2 все ( Перейти к последнему сообщению ) |
Сообщ.
#1
,
|
|
|
Имеется таблица Excel. Как проще сделать так, чтобы при щелчке в любую ячейку определенного столбца открывалась UserForm и этой форме были переданы координаты ячейки? Или как привязать комбобокс к столбцу, чтобы пользователи выбирали данные этой ячейки из комбобокса?
|
Сообщ.
#2
,
|
|
|
Я нашел пример, только помогите понять:
1 В примере есть комбобокс, визуально найти не могу. Он судя по всему создается не в realtime, тогда где посмотреть список объектов, которые есть на листе? 2 В свойствах этого комбобокс есть поле ListFillRange, там стоит значение "области". Где посмотреть эти "области" и что это такое? Прикреплённый файлSample__14_05_2010__22_29_35.zip (10,35 Кбайт, скачиваний: 420) |
Сообщ.
#3
,
|
|
|
Открой Эксель.
На листе пометь нужный диапазон (например, прямоугольный от C5 до F13, пометить заливкой... ну или весь столбец, как там тебе надо). Иди в редактор VBA. Добавь в проект форму UserForm1. Брось на неё надпись Label1. Выбери в списке объектов тот лист, на котором отмечал диапазон. Открой его модуль и напиши там (поправив во второй строке адрес помеченного диапазона): Private Sub Worksheet_SelectionChange(ByVal Target As Range) If Not Intersect(Target, Range("C5:F13")) Is Nothing Then UserForm1.Label1.Caption = "Address: " & Target.Address UserForm1.Show End If End Sub Наслаждайся эффектом. |
Сообщ.
#4
,
|
|
|
Спасибо.
А если на форму добавить объект, то как к нему обратиться можно? Например добавили комбобокс и хотим изменить его местоположение на странице. |
Сообщ.
#5
,
|
|
|
Точно так же, как я изменяю текст надписи.
|
Сообщ.
#6
,
|
|
|
Я имел в виду не на форме, а на листе worksheet:
Если мы нажимаем свойство этого объекта, то выскакивает окно "формат элемента управления", а не полноценное окно properties как для всего Листа. Т.е. не посмотреть имя объекта, для обращения к нему. |
Сообщ.
#7
,
|
|
|
Ну так и разбирайся в объектной модели Экселя, что это за объект и в каком контейнере и как его искать...
|
Сообщ.
#8
,
|
|
|
Цитата ^D^ima @ как к нему обратиться можно? Например добавили комбобокс и хотим изменить его местоположение на странице. ежели переместить вручную - то кликаешь по объекту мышой, удерживая Ctrl - и вперед ежели хочешь помучить программно, то имя автоматом формируется по принципу: название объекта + инкремент, т.о. в твоем случае For Each xx In ActiveSheet.Shapes Debug.Print xx.Name Next выдаст нечто вроде Drop Down 1 |
Сообщ.
#9
,
|
|
|
Old Bat
Получил Drop Down 2. А как затем что-то изменить у этого объекта? |
Сообщ.
#10
,
|
|
|
Цитата ^D^ima @ Old Bat А фигли ты Dr начинаешь набирать? тебе же показали - ActiveSheet.Shapes("Drop Down 2"). набирать надо... или около того. Ну или xx - только тогда напиши для него правильный Dim. |
Сообщ.
#11
,
|
|
|
к объекту обращаемся либо по имени, либо по номеру, например:
ActiveSheet.Shapes("Drop Down 2").Name = "qwe" |
Сообщ.
#12
,
|
|
|
Но по-хорошему вопрос решается стандартными средствами, без программинга, через ИМЯ диапазона.
|
Сообщ.
#13
,
|
|
|
Old Bat
А в примере во 2-м посте как создается combobox? У него нормальные свойства. |
Сообщ.
#14
,
|
|
|
именно через диапазон, в данном случае с именем "области", ссылающееся на =Список!$A$1:$A$5
см. закладку ФОРМУЛЫ, раздел ОПРЕДЕЛЕННЫЕ ИМЕНА + встроенная справка, глава "Определение и использование имен в формулах" |
Сообщ.
#15
,
|
|
|
Ясно. Спасибо.
Добавлено И все-же не нашел где там создается сам combobox? На форме его не видно, при создании Worksheet_Activate() тоже ничего нет, а обращение Me.Combo есть. |