powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / Как присвоить значение многостолбцовому комбобоксу?
17 сообщений из 17, страница 1 из 1
Как присвоить значение многостолбцовому комбобоксу?
    #36668337
Тыжных Иван
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
На форме есть комбобокс с двумя столбцами. Первый имеет нулевую ширину (ключ)
При инициализации форму заполняю комбобокс данными через двухмерный массив.
После заполнения мне нужно чтобы комбобокс отображал нужную мне строчку.
Пробовал делать так:
combobox.value=10

В итоге value почему то остается NULL, зато св-во Text принимает значение 10. Комбобокс его отображает.

пс форма в visio
...
Рейтинг: 0 / 0
Как присвоить значение многостолбцовому комбобоксу?
    #36668580
Фотография vlth
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Тыжных Иван,

Попробуйте ComboBox.ListIndex = 10 (будет выделен и отображён 11-й элемент списка).
...
Рейтинг: 0 / 0
Как присвоить значение многостолбцовому комбобоксу?
    #36669037
Тыжных Иван
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
да, видимо так и придется делать. решение не очень хорошее в том плане что сначала надо весь массив пробежать с поиском ключа
...
Рейтинг: 0 / 0
Как присвоить значение многостолбцовому комбобоксу?
    #36670205
KL (XL)
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Что-то в таком духе:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
Private Sub UserForm_Initialize()
    
    'подготовка примера
    Dim arrOptions( 1  To  2 ,  1  To  12 )
    Dim cb As MSForms.ComboBox
    
    Set cb = Me.ComboBox1
    For i =  1  To  12 
        arrOptions( 1 , i) = i
        arrOptions( 2 , i) = Format(DateSerial( 2010 , i,  1 ), "MMMM")
    Next i
    ComboBox1.Column = arrOptions
    
    'собственно решение
    Dim strFind As String
    strFind = Format(Date, "MMMM")
    With Application
        cb.ListIndex = .Match(strFind, .Index(cb.Column,  2 ),  0 ) -  1 
    End With

End Sub
...
Рейтинг: 0 / 0
Как присвоить значение многостолбцовому комбобоксу?
    #36670371
Фотография vlth
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
KL (XL),

А я, получив аналогичный результат (немного по-другому, правда), решил, что он не соответствует условию задачи...
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
Private Sub UserForm_Initialize()
Dim ar( 0  To  12 ,  0  To  1 ) As String

For i =  0  To  12 
    For j =  0  To  1 
        ar(i, j) = CStr(i + j)
    Next j
Next i
Me.ComboBox1.List = ar
End Sub
Private Sub CommandButton1_Click()
Me.ComboBox1.SelText =  10 
End Sub
...
Рейтинг: 0 / 0
Как присвоить значение многостолбцовому комбобоксу?
    #36670389
KL (XL)
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vlthKL (XL),

А я, получив аналогичный результат (немного по-другому, правда), решил, что он не соответствует условию задачи...
+
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
Private Sub UserForm_Initialize()
Dim ar( 0  To  12 ,  0  To  1 ) As String

For i =  0  To  12 
    For j =  0  To  1 
        ar(i, j) = CStr(i + j)
    Next j
Next i
Me.ComboBox1.List = ar
End Sub
Private Sub CommandButton1_Click()
Me.ComboBox1.SelText =  10 
End Sub

vlth,
А он (результат) и не соответствовует изначальной задаче, а скорее заключительной ремарке автора про "не очень хорошее решение" для непоставленной задачи :-)
...
Рейтинг: 0 / 0
Как присвоить значение многостолбцовому комбобоксу?
    #36670390
KL (XL)
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
*не соответствует
...
Рейтинг: 0 / 0
Как присвоить значение многостолбцовому комбобоксу?
    #36670719
Фотография vlth
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
KL (XL)vlth,
А он (результат) и не соответствовует изначальной задаче, а скорее заключительной ремарке автора про "не очень хорошее решение" для непоставленной задачи :-)

А... Ну да, понятно ))
...
Рейтинг: 0 / 0
Как присвоить значение многостолбцовому комбобоксу?
    #36672334
Тыжных Иван
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
KL (XL)Что-то в таком духе:

Код: plaintext
1.
2.
3.
4.
    With Application
        cb.ListIndex = .Match(strFind, .Index(cb.Column,  2 ),  0 ) -  1 
   End With



Не очень разобрался в примере. Match это чей метод? И Index тоже. Аппликасьона?
Справка ничо не дает, обжект браузер тоже. Хотя компилятор не ругается.
...
Рейтинг: 0 / 0
Как присвоить значение многостолбцовому комбобоксу?
    #36673037
Фотография vlth
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Тыжных ИванKL (XL)Что-то в таком духе:

Код: plaintext
1.
2.
3.
4.
    With Application
        cb.ListIndex = .Match(strFind, .Index(cb.Column,  2 ),  0 ) -  1 
   End With



Не очень разобрался в примере. Match это чей метод? И Index тоже. Аппликасьона?
Справка ничо не дает, обжект браузер тоже. Хотя компилятор не ругается.

Тыжных Иван, это KL использовал устаревший вариант вызова функций листа, т.к. он короче в
записи, наверное.
Полностью - Application.WorksheetFunction.Match() (или короче - WorksheetFunction.Match() ).
То же самое и с .Index()
...
Рейтинг: 0 / 0
Как присвоить значение многостолбцовому комбобоксу?
    #36673061
Фотография vlth
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
P.S. Имеется в виду лист Excel, конечно.
...
Рейтинг: 0 / 0
Как присвоить значение многостолбцовому комбобоксу?
    #36673076
Тыжных Иван
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vlth

Тыжных Иван, это KL использовал устаревший вариант вызова функций листа, т.к. он короче в
записи, наверное.
Полностью - Application.WorksheetFunction.Match() (или короче - WorksheetFunction.Match() ).
То же самое и с .Index()

Спасибо, значит в Visio это совсем отпадает. Реализовал через свой поиск в массиве. 3609 элементов. пока полет нормальный.
...
Рейтинг: 0 / 0
Как присвоить значение многостолбцовому комбобоксу?
    #36674515
ZVI
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Можно использовать коллекцию, созданную по ключевому столбцу для быстрого поиска:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
Dim x As New Collection

Sub Init()
  ' Тестовый пример, для рабочего использовать ключевой столбец массива
  For i =  0  To  10 
    'x.Add i, CStr(arr(i, 1)) ' <-- для рабочего варианта
    x.Add i, "Key" & i
  Next
End Sub

Function KeyValue(Key) As Long
  On Error Resume Next
  If x.Count =  0  Then Init
  KeyValue = x.Item(CStr(Key))
  If Err <>  0  Then KeyValue = - 1 
End Function

Sub Test()
  Debug.Print KeyValue("Key7")
  'ComboBox1.ListIndex = KeyValue("Key7")
End Sub
...
Рейтинг: 0 / 0
Как присвоить значение многостолбцовому комбобоксу?
    #36674672
Тыжных Иван
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ZVIМожно использовать коллекцию

Спасибо за идею!
...
Рейтинг: 0 / 0
Как присвоить значение многостолбцовому комбобоксу?
    #36674686
Тыжных Иван
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Начал делать и понял что не совсем мой случай, так как от массива не отказаться ввиду того, что через него заполняется комбобокс. В этом случае придется заполнять и массив, и коллекцию.
Поскольку инициализация происходит один раз при открытии формы, пробежаться по уже заполненному массиву будет быстрее, чем заполнять коллекцию теми же данными.
...
Рейтинг: 0 / 0
Как присвоить значение многостолбцовому комбобоксу?
    #36674747
ZVI
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вам виднее, так как, действительно, зависит от конкретной задачи.
Но на всякий случай уточню, что коллекции заполняется однократно и затем значительно ускоряет поиск. Имеет смысл, если поиск потребуется выполнять не один раз, и если количество элементов значительное.
...
Рейтинг: 0 / 0
Как присвоить значение многостолбцовому комбобоксу?
    #36675099
Тыжных Иван
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ZVI коллекции заполняется однократно и затем значительно ускоряет поиск

Это то мне и понравилось сначала, но я и использовал бы ее однократно. Шкурка выделки не стоит.
...
Рейтинг: 0 / 0
17 сообщений из 17, страница 1 из 1
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / Как присвоить значение многостолбцовому комбобоксу?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]