powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Выделение значение в раскрывающемся списке.
25 сообщений из 26, страница 1 из 2
Выделение значение в раскрывающемся списке.
    #36461850
segail
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Здравствуйте.
Подскажите как сделать чтобы при открытие списка ComboBox1в раскрывающимся списке, где указаны различные значения, выделялось то значение которое указано в ячейки Sheets("Отчет").Range("Z1").Value
...
Рейтинг: 0 / 0
Выделение значение в раскрывающемся списке.
    #36461885
Фотография vlth
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
segail,

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
'ComboBox1 - на листе "Отчет"
Private Sub ComboBox1_Change()
Dim oCell As Range
Set oCell = Me.Cells.Find(Me.ComboBox1)
oCell.Select
End Sub
'ComboBox1 - на форме
Private Sub ComboBox1_Change()
Dim oCell As Range
Set oCell = Worksheets("Отчет").Cells.Find(Me.ComboBox1)
oCell.Select
End Sub

Диапазон поиска можно сузить, заменив "Cells на Columns(26) (столбец Z:Z), например.
...
Рейтинг: 0 / 0
Выделение значение в раскрывающемся списке.
    #36461904
segail
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vlth,

Что-то не то.

Значения в ComboBox1 загружаются при Initialize формы, одно из этих значений находится в ячейки Z1 (или ячейка пуста). При выполнении открытие раскрывающегося списка необходимо выделить то значение, которое будет указано в ячейки Z1 (то есть по совпадению текстов ComboBox1 и ячейки Z1), что бы можно было определить какое значение на данный момент находится в ячейки Z1.
...
Рейтинг: 0 / 0
Выделение значение в раскрывающемся списке.
    #36461912
segail
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
segail,

Дополнение
Выделялось или фокусировалось (синим цветом)
...
Рейтинг: 0 / 0
Выделение значение в раскрывающемся списке.
    #36461952
Фотография vlth
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
segail, прошу прощения, был невнимателен ((
Код: plaintext
Me.ComboBox1 = Worksheets("Отчет").Cells( 1 ,  26 )
...
Рейтинг: 0 / 0
Выделение значение в раскрывающемся списке.
    #36461968
segail
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vlthsegail, прошу прощения, был невнимателен ((
Код: plaintext
Me.ComboBox1 = Worksheets("Отчет").Cells( 1 ,  26 )

Что-то опять не то
Как я понял, по Вашему коду ComboBox1 равен значению ячейки Z1, а надо чтобы при открытии списка, было выделение того значения в ComboBox1, которое указано в ячейки Z1.
...
Рейтинг: 0 / 0
Выделение значение в раскрывающемся списке.
    #36461979
Фотография vlth
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
segail, хмм, наверное, нужно тогда это?
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
Private Sub ComboBox1_MouseDown(ByVal Button As Integer, ByVal Shift As Integer, _
    ByVal X As Single, ByVal Y As Single)
Dim i As Byte, oCell As Range: Set oCell = Worksheets("Отчет").Cells( 16 ,  6 )
With Me.ComboBox1
    For i =  0  To .ListCount -  1 
        If oCell = .List(i) Then
            .Value = oCell
            Exit For
        End If
    Next i
End With
End Sub
...
Рейтинг: 0 / 0
Выделение значение в раскрывающемся списке.
    #36461981
Фотография vlth
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Поправлю: Set oCell = Worksheets("Отчет").Cells(1, 26)
...
Рейтинг: 0 / 0
Выделение значение в раскрывающемся списке.
    #36461982
Фотография vlth
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Можно ещё так:
Код: plaintext
1.
2.
3.
4.
5.
...
        If oCell = .List(i) Then
            .ListIndex = i
            Exit For
        End If
...
...
Рейтинг: 0 / 0
Выделение значение в раскрывающемся списке.
    #36461995
Фотография vlth
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
segail,
Вероятно (вероятно, поскольку я не знаю логики Вашего проекта), Вам нужно будет предварительно запоминать текущее значение комбобокса, чтобы восстанавливать его после закрытия списка. Как это сделать - лучше Вас никто не придумает, но, я полагаю, без доп. переключателя, или счётчика (переменной, фиксирующей обращения к комбобоксу), или обработки доп. события формы (или комбобокса), Вам не обойтись.
...
Рейтинг: 0 / 0
Выделение значение в раскрывающемся списке.
    #36462154
Фотография Shamanus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vlthМожно ещё так:
Код: plaintext
1.
2.
3.
4.
5.
...
        If oCell = .List(i) Then
            .ListIndex = i
            Exit For
        End If
...


через лист индекс кошер
через маус мув некошер
...
Рейтинг: 0 / 0
Выделение значение в раскрывающемся списке.
    #36462180
Фотография Shamanus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shamanusчерез маус мув некошер

простите затупил...
думал кошер через DropButtonClick потому, что при пустом значении комбобокса он в отличии от маус даун не навязывает значение индекса в value
но DropButtonClick тоже не кошер, потому, что он вообще не дает менять значение комбо.

Наверно из имющихся вариантов маус даун кошер
...
Рейтинг: 0 / 0
Выделение значение в раскрывающемся списке.
    #36462211
segail
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shamanus,
Что то я заплутал…
Не думал что так сложно…
На рисунке выше для примера показано, выделение нужного параметра уже в открытом списке, путем наведения курсора.
Необходимо чтобы он уже был выделен именно в раскрытом списке без наведения курсора, в зависимости от того какой текст находится в Z1.
Мне кажется для этого изначально необходимо выполнить действие ComboBox1_Click, так как действие ComboBox1_Change у меня выполняет определенный код.
...
Рейтинг: 0 / 0
Выделение значение в раскрывающемся списке.
    #36462229
Фотография vlth
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shamanus

Чтобы не думать, что - кошер, а что - нет, я бы вывел значение из Z1 куда-нить в другое место на форме: его и видно будет всегда, и сложности с переключением значений в списке обходить не придётся. Но, дело автора, конечно...
...
Рейтинг: 0 / 0
Выделение значение в раскрывающемся списке.
    #36462232
segail
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vlthsegail,
Вероятно (вероятно, поскольку я не знаю логики Вашего проекта).
Логика изначально проста. Пользователь раскрыл список и по выделению определил, что он будет работает с таким то параметром. Далее он выбирает путем действия ComboBox1_Change это же параметр, или выбирает другой (но это уже не надо).
...
Рейтинг: 0 / 0
Выделение значение в раскрывающемся списке.
    #36462263
Фотография Shamanus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
segailShamanus,
Что то я заплутал…
Не думал что так сложно…
На рисунке выше для примера показано, выделение нужного параметра уже в открытом списке, путем наведения курсора.
Необходимо чтобы он уже был выделен именно в раскрытом списке без наведения курсора, в зависимости от того какой текст находится в Z1.
Мне кажется для этого изначально необходимо выполнить действие ComboBox1_Click, так как действие ComboBox1_Change у меня выполняет определенный код.

Click тут не подходит
событие которое предлагает обрабатывать vlth это ComboBox1_MouseDown. Но ComboBox1_MouseDown будет всегда ставить Вам в Value комбо значение найденного индекса, даже если пользователь не нажал разворот списка. Т.е. это не очень удобно.

Я думал ставить ComboBox1_DropButtonClick это собственно нажатие кнопки разворота списка. Но указанный код в данном случае не очень подходит т.к. не дает менять значение пока кнопка нажата.

по уму нужно событие Before DropButtonClick но такого нет. Поэтому ComboBox1_MouseDown это лучшее из имеющихся событий под Вашу задачу.
...
Рейтинг: 0 / 0
Выделение значение в раскрывающемся списке.
    #36462267
Фотография Shamanus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vlthShamanus

Чтобы не думать, что - кошер, а что - нет, я бы вывел значение из Z1 куда-нить в другое место на форме: его и видно будет всегда, и сложности с переключением значений в списке обходить не придётся. Но, дело автора, конечно...

Да нет, можно проще. Можно при любом событии вызывающим изменение Z1 просто менять индекс комбобокса. Но логику проекта точно нужно знать.
...
Рейтинг: 0 / 0
Выделение значение в раскрывающемся списке.
    #36462281
segail
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shamanus,
Момент файл сделаю.
...
Рейтинг: 0 / 0
Выделение значение в раскрывающемся списке.
    #36462320
Фотография Shamanus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
segailShamanus,
Момент файл сделаю.
вот пример
может он поможет
...
Рейтинг: 0 / 0
Выделение значение в раскрывающемся списке.
    #36462347
segail
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
segail,
Смотрите пример
...
Рейтинг: 0 / 0
Выделение значение в раскрывающемся списке.
    #36462402
segail
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ShamanussegailShamanus,
Момент файл сделаю.
вот пример
может он поможет
...
Рейтинг: 0 / 0
Выделение значение в раскрывающемся списке.
    #36462459
segail
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
segail,
Смотрите пример более подробно.
...
Рейтинг: 0 / 0
Выделение значение в раскрывающемся списке.
    #36462466
Фотография Shamanus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
segail,

я изменил код формы 1 на вот такой
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
Dim First As Boolean
Private Sub ComboBox1_Change()
      If First Then
      First = False
      Else
        UserForm3.Label_norm.Caption = ComboBox1.Value
        Unload Me
        UserForm3.Show
    End If
End Sub

Private Sub UserForm_Initialize()
'Заполнение списка ComboBox1

    First = True
    ComboBox1.AddItem "Привет vlth"
    First = True
    ComboBox1.AddItem "Привет Shamanus"
    First = True
    ComboBox1.AddItem "segail тупит"
    First = True
    ComboBox1.Value = Sheets("Отчет").Range("Z1")
End Sub

и он работает, но гораздо оптимальнее вот такой

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
Dim First As Boolean

Private Sub ComboBox1_Change()
      If First Then
      First = False
      Else
        UserForm3.Label_norm.Caption = ComboBox1.Value
        Unload Me
        UserForm3.Show
    End If
End Sub

Private Sub UserForm_Initialize()
'Заполнение списка ComboBox1
Dim MyArr( 1  To  3 ) As String
    MyArr( 1 ) = "Привет vlth"
    MyArr( 2 ) = "Привет Shamanus"
    MyArr( 3 ) = "segail тупит"

    ComboBox1.List = MyArr
    First = True
    ComboBox1.Value = Sheets("Отчет").Range("Z1")
End Sub

просто каждый ComboBox1.AddItem вызывает ComboBox1_Change
...
Рейтинг: 0 / 0
Выделение значение в раскрывающемся списке.
    #36462479
Фотография Shamanus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
segail,

посмотрел, собственно то, что я написал выше и должно решить проблему
...
Рейтинг: 0 / 0
Выделение значение в раскрывающемся списке.
    #36463264
segail
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Небольшой вопрос к данной теме.

Возможно ли действие:
При открытие объекта список ComboBox1 объект TextBox1.Visible=True
При закрытие объекта список ComboBox1 объект TextBox1.Visible=False
...
Рейтинг: 0 / 0
25 сообщений из 26, страница 1 из 2
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Выделение значение в раскрывающемся списке.
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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