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

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

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

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Старый 09.07.2009, 23:01   #1
motorway
Участник клуба
 
Регистрация: 28.06.2009
Сообщений: 1,950
По умолчанию Выделенный элемент у Dropdown

Как у DropDown'а (выпад. списка) получить свойство "отмеченный элемент" (Selected Element), чтобы можно было передать др. функции? Точнее, нужно сделать при выборе некоторого элемента списка вызов функции с передачей номера отмеченного элемента. Элементы могут добавляться в список

Последний раз редактировалось motorway; 09.07.2009 в 23:10.
motorway вне форума Ответить с цитированием
Старый 10.07.2009, 05:08   #2
SAS888
Старожил
 
Аватар для SAS888
 
Регистрация: 05.12.2007
Сообщений: 4,180
По умолчанию

Такого свойства нет, но получить можно.
Пусть выпадающий список находится в ячейке "A1".
1. Чтобы при выборе значения из списка вызывалась функция и в качестве параметра в нее передавалось выбранное значение, в модуль соответствующего листа вставьте код:
Код:
Private Sub Worksheet_Change(ByVal Target As Range)
    If Target.Address = [A1].Address Then MsgBox View(Target.Value)
End Sub

Function View(s As String) As String
    View = "Вызов функции с параметром " & Chr(34) & s & Chr(34)
End Function
Естественно, сама функция приведена для примера.
2. Если же в качестве параметра нужно передать номер элемента в списке, то возможны 2 варианта:
1) Если список задан непосредственно (значениями, через ";"), то, например, так:
Код:
Private Sub Worksheet_Change(ByVal Target As Range)
    Dim i As Integer, a
    If Target.Address <> [A1].Address Then Exit Sub
    a = Split(Target.Validation.Formula1, ";")
    For i = LBound(a) To UBound(a)
        If a(i) = Target.Value Then MsgBox View(CStr(i + 1))
    Next
End Sub
2) Если список задан диапазоном, содержащим значения, тогда, например, так:
Код:
Private Sub Worksheet_Change(ByVal Target As Range)
    Dim x As Range, i As Integer
    If Target.Address <> [A1].Address Then Exit Sub
    Set x = Range(Target.Validation.Formula1): i = 1
    For Each Cell In x
        If Cell.Value = Target.Value Then MsgBox View(CStr(i)) Else i = i + 1
    Next
End Sub
P.S. Обратите внимание, что в моих примерах, номер элемента списка, перед передачей в функцию преобразовывается в тип String (т.к. этого требует функция). Вы же, в свою очередь, сделайте так, как Вам требуется.
Чем шире угол зрения, тем он тупее.

Последний раз редактировалось SAS888; 10.07.2009 в 05:48.
SAS888 вне форума Ответить с цитированием
Старый 10.07.2009, 22:27   #3
motorway
Участник клуба
 
Регистрация: 28.06.2009
Сообщений: 1,950
По умолчанию

У меня получилось вывести номер позиции в списке просто через Dropdowns(1).Value. Если же нужно сам текст, то можно завести массив со значениями списка при их добавлении.
motorway вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как в ListView показать выделенный элемент? Stilet Компоненты Delphi 2 02.07.2009 12:21
Первый нечетный элемент каждой строки удвоить (предполагается, что в каждой строке есть нечетный элемент Галина002 Помощь студентам 1 18.03.2009 06:30
Выделенный компонент Witaliy Общие вопросы Delphi 2 09.06.2008 19:31
Выделенный текст в RichEdit Andr Компоненты Delphi 1 20.08.2007 20:53