Вопрос по выпадающему списку

Весь MS Office, программирование на Visual Basic for Applications и MS VB

Модератор: Naeel Maqsudov

Pavel55
Сообщения: 418
Зарегистрирован: 20 окт 2006, 11:40
Откуда: Moscow

Точно не знаю, но, наверное, так

Код: Выделить всё

Private Sub CommandButton1_Click()
    With Me.ComboBox1
        .AddItem "Яблоки"
        .AddItem "Груши"
        .AddItem "Сливы"
    End With
End Sub
Akemi
Сообщения: 19
Зарегистрирован: 20 ноя 2007, 14:57
Контактная информация:

Именно так, все работает, спасибо.
maxxximum
Сообщения: 2
Зарегистрирован: 22 дек 2007, 20:48

Может быть, я неправильно понял Ваш вопрос, но, на мой взгляд, есть решение проще. Как я понимаю, Ваши данные организованы в 4 столбца: в первом данные для комбобокса, остальные из той же строки должны вставляться автоматически.
А В С D
1 Иванов Жигули 1997 Да
2 Петров Волга 2005 Да
3 Сидоров Камаз 2001 Нет

В целевой ячейке, там где Вы хотите видеть Combobox, создайте проверку списком (Данные-Проверка (Data-Validation)), в качестве источника - А1:А3 из моего примера.
В ячейку В1 =vlookup(A1;A1 :D 3;2;0), C1 =vlookup(A1;A1 :D 3;3;0), D1 =vlookup(A1;A1 :D 3;3;0)

Эта функция ищет целевое значение (здесь А1) в первом столбце указанного диапазона (здесь A1 :D 3) и возвращает значение из найденной строки для указанного столбца (здесь соответственно 2,3 и 4 для B1,C1 и D1). Последний аргумент - точность поиска, 0 - абсолютно точно.

p.s. Развеселые зеленые смайлы следует читать как : D без пробела. Я не знаю как это исправить
Akemi
Сообщения: 19
Зарегистрирован: 20 ноя 2007, 14:57
Контактная информация:

Спасибо, я уже этот вопрос решил. Избавиться от смайлов думаю можно поместив код в тег

Код: Выделить всё

 ВАШ КОД [./code] (без точки.)
Teslenko_EA
Сообщения: 526
Зарегистрирован: 04 фев 2007, 18:37
Откуда: Сургут
Контактная информация:

Здравствуйте Akemi.
Ваш код выглядит очень громоздко.

Код: Выделить всё

Sub ComboBox1_Click()
Dim oWS As Object, v(3)
Set oWS = Worksheets(1)
With Me.ComboBox1
    .ListFillRange = "K1:K15"
    If .Value = "" Then
        'Empty
    Else
        i = Me.ComboBox1.ListIndex
        v(1) = oWS.Range("d" & 7 + i).Value
        v(2) = oWS.Range("c" & 7 + i).Value
        v(3) = oWS.Range("b" & 7 + i).Value
    End If
End With
Range("h16").Value = v(1)
Range("i16").Value = v(2)
Range("j16").Value = v(3)
End Sub
подобный код будет выполнять такие же действия, но он короче ;)
Евгений
Akemi
Сообщения: 19
Зарегистрирован: 20 ноя 2007, 14:57
Контактная информация:

спасибо, сейчас попробую оптимизировать код по вашему методу =)
Diment
Сообщения: 138
Зарегистрирован: 04 сен 2006, 11:39
Откуда: Кисловодск

ну твоя проблема ведь решается без всякого программирования.
использую ф-ю ВПР()
Вложения
пример1.zip
(2.77 КБ) 33 скачивания
Ответить