Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Выделение значение в раскрывающемся списке. / 25 сообщений из 26, страница 1 из 2
10.02.2010, 23:11
    #36461850
segail
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выделение значение в раскрывающемся списке.
Здравствуйте.
Подскажите как сделать чтобы при открытие списка ComboBox1в раскрывающимся списке, где указаны различные значения, выделялось то значение которое указано в ячейки Sheets("Отчет").Range("Z1").Value
...
Рейтинг: 0 / 0
10.02.2010, 23:37
    #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
10.02.2010, 23:52
    #36461904
segail
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выделение значение в раскрывающемся списке.
vlth,

Что-то не то.

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

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

Что-то опять не то
Как я понял, по Вашему коду ComboBox1 равен значению ячейки Z1, а надо чтобы при открытии списка, было выделение того значения в ComboBox1, которое указано в ячейки Z1.
...
Рейтинг: 0 / 0
11.02.2010, 02:11
    #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
11.02.2010, 02:12
    #36461981
vlth
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выделение значение в раскрывающемся списке.
Поправлю: Set oCell = Worksheets("Отчет").Cells(1, 26)
...
Рейтинг: 0 / 0
11.02.2010, 02:18
    #36461982
vlth
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выделение значение в раскрывающемся списке.
Можно ещё так:
Код: plaintext
1.
2.
3.
4.
5.
...
        If oCell = .List(i) Then
            .ListIndex = i
            Exit For
        End If
...
...
Рейтинг: 0 / 0
11.02.2010, 03:08
    #36461995
vlth
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выделение значение в раскрывающемся списке.
segail,
Вероятно (вероятно, поскольку я не знаю логики Вашего проекта), Вам нужно будет предварительно запоминать текущее значение комбобокса, чтобы восстанавливать его после закрытия списка. Как это сделать - лучше Вас никто не придумает, но, я полагаю, без доп. переключателя, или счётчика (переменной, фиксирующей обращения к комбобоксу), или обработки доп. события формы (или комбобокса), Вам не обойтись.
...
Рейтинг: 0 / 0
11.02.2010, 09:17
    #36462154
Shamanus
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выделение значение в раскрывающемся списке.
vlthМожно ещё так:
Код: plaintext
1.
2.
3.
4.
5.
...
        If oCell = .List(i) Then
            .ListIndex = i
            Exit For
        End If
...


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

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

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

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

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

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

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

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

Да нет, можно проще. Можно при любом событии вызывающим изменение Z1 просто менять индекс комбобокса. Но логику проекта точно нужно знать.
...
Рейтинг: 0 / 0
11.02.2010, 10:14
    #36462281
segail
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выделение значение в раскрывающемся списке.
Shamanus,
Момент файл сделаю.
...
Рейтинг: 0 / 0
11.02.2010, 10:32
    #36462320
Shamanus
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выделение значение в раскрывающемся списке.
segailShamanus,
Момент файл сделаю.
вот пример
может он поможет
...
Рейтинг: 0 / 0
11.02.2010, 10:40
    #36462347
segail
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выделение значение в раскрывающемся списке.
segail,
Смотрите пример
...
Рейтинг: 0 / 0
11.02.2010, 10:53
    #36462402
segail
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выделение значение в раскрывающемся списке.
ShamanussegailShamanus,
Момент файл сделаю.
вот пример
может он поможет
...
Рейтинг: 0 / 0
11.02.2010, 11:08
    #36462459
segail
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выделение значение в раскрывающемся списке.
segail,
Смотрите пример более подробно.
...
Рейтинг: 0 / 0
11.02.2010, 11:09
    #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
11.02.2010, 11:13
    #36462479
Shamanus
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выделение значение в раскрывающемся списке.
segail,

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

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


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