Выберите новые значения в ActiveX Combobox, пропустите пустые ячейки - PullRequest
0 голосов
/ 21 мая 2019

Я бы хотел автоматически подбирать значения в выпадающий список ActiveX на рабочем листе в зависимости от значений диапазона. Я хотел бы активировать код каждый раз, когда пользователь открывает раскрывающийся список. Я придумал текущее решение, но иногда оно показывает значения х 3 или 4. Что, возможно, не так с кодом?

В диапазоне B55: B71 У меня есть список значений. Они отображаются по формуле, и некоторые из них =if(A1="";"";A1) (пример формулы для понимания результата) (пусто).

Вот мой код:

Private Sub CommercialBox_Click()
Dim RngCom As Range
ThisWorkbook.Sheets("MAIN").CommercialBox.Clear
With ThisWorkbook.Sheets("Contact database")
    For Each RngCom In .Range(.Range("B55"), .Range("B71" & .Rows.Count).End(xlUp))
        If RngCom.Value <> vbNullString Then ThisWorkbook.Sheets("MAIN").CommercialBox.AddItem RngCom.Value
    Next RngCom
End With
End Sub

1 Ответ

1 голос
/ 21 мая 2019

Чтобы уточнить мой комментарий:

Вы утверждаете, что хотите, чтобы этот код запускался, когда пользователь открывает в раскрывающемся списке, а не когда щелкнуло . Ваш текущий код будет работать только при выборе значения. DropButtonClick будет активировано при открытии выпадающего списка.

Также вы указали фиксированный диапазон от B55:B71, так почему бы не реализовать это ...

Private Sub CommercialBox_DropButtonClick()
Dim RngCom As Range
ThisWorkbook.Sheets("MAIN").CommercialBox.Clear
With ThisWorkbook.Sheets("Contact database")
    For Each RngCom In .Range("B55:B71")
        If RngCom.Value <> vbNullString Then ThisWorkbook.Sheets("MAIN").CommercialBox.AddItem RngCom.Value
    Next RngCom
End With
End Sub
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...