Получение ComboBox для автозаполнения при наборе текста - PullRequest
0 голосов
/ 27 февраля 2020

Я пытаюсь добавить окно поиска, которое будет автоматически заполнять имя чего-либо, когда пользователь вводит слово. Таблица, в которой я составил список всех слов, которые я покажу sh, была сделана на другом листе внутри рабочей книги имен.

Это код, который я использую:

Private Sub ComboBox1_Click()

    Dim wbExternal As Workbook 'the other workbook with the data
    Dim wsExternal As Worksheet 'the worksheet in the other workbook
    Dim lnLastRow As Long   'last row on the worksheet
    Dim rngExternal As Range 'range of data from RowSource

    Set wbExternal = Application.Workbooks("New Material Search - 2020 Draft.xlsm")
    Set wsExternal = wbExternal.Worksheets("Man_Prod")
    lngLastRow = wsExternal.Range("A" & wsExternal.Rows.Count).End(xlUp).Row
    Set rngExternal = wsExternal.Range("A2:A" & CStr(lngLastRow))

    ComboBox1 = rngExternal.Address(External:=True)

End Sub

Однако в ComboBox все, что я получаю, это '[New Material Search - 2020 Draft.xlsm]Man_Prod'!$A$2:$A$6 и ошибка с надписью

В этой формуле отсутствует ссылка на диапазон или определенное имя.

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

1 Ответ

1 голос
/ 27 февраля 2020

Вам необходимо создать al oop и добавить все значения из внешнего диапазона в ComboBox1. Поэтому вместо ComboBox1 = rngExternal.Address(External:=True) вы должны использовать что-то вроде этого:

For r in rngExternal
  ComboBox1.AddItem r.Value
Next r

Подробнее читайте здесь: https://www.contextures.com/Excel-VBA-ComboBox-Lists.html

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...