Я новичок в VBA. Как правило, я буду использовать функции Excel, чтобы справиться со своим собственным внутренним анализом и т. Д. Однако в новой начинающей компании, располагающей ограниченными ресурсами, мне нужно создать пользователя, из которого пользователи смогут выполнять поиск в спискепрофессий и при обнаружении он должен отобразить список параметров, прикрепленных к этому занятию, в текстовых полях, не имея возможности изменять эти значения, кроме ввода нового занятия для поиска.
Я начал с моей электронной таблицы (4610 строк данных с 11 столбцами данных рядом с каждой). Я пытаюсь создать поле со списком поиска по альфа-чувствительному типу, в котором пользователь должен начать набирать искомую профессию, и в ней должен быть указан, скажем, 8 профессий в качестве пользовательского типа, после чего он может выбрать правильную, которая затем должна отобразить другую. параметры в пользовательской форме.
Я начал с пользовательской формы, выбрал ComboBox из инструментов и других текстовых полей, где должны отображаться данные.
Я вошел в СвойстваComboBox и установите для MatchEntry значение 1 - fmMatchEntryComplete и ControlTipText Начните вводить искомое занятие , а для ListRows - 8.
Я искал в StackOverflow руководство и адаптировал код, отображаемый в следующий поток ?
Вот мой код для ComboBox:
Private Sub ComboBox1_Change()
Dim ws As Worksheet
Dim x, dict
Dim i As Long
Dim str As String
Set ws = Sheets("Occupations")
Set Rng = ws.Range(Cell1:="C2")
x = ws.Range("C2").Value
Set dict = CreateObject("scripting.dictionary")
str = Me.ComboBox1.Value
If str <> "" Then
For i = 1 To UBound(x, 1)
If InStr(LCase(x(i, 1)), LCase(str)) > 0 Then
dict.Item(x(i, 1)) = ""
End If
Next i
Me.ComboBox1.List = dict.Keys
Else
Me.ComboBox1.List = x
End If
Me.ComboBox1.DropDown
End Sub
Мой список занятий (4610 записей) находится в столбце C2 в Занятиях на листе.
Код для UserForm_Initialise выглядит следующим образом:
Dim occupationName As Range
Dim ws As Worksheet
Set ws = Worksheets("Occupations")
For Each occupationName In ws.Range(Cell1:="C2")
With Me.ComboBox1
.AddItem occupationName.Value
.List(.ListCount - 1, 1) = occupationName.Offset(0, 1).Value
End With
Next occupationName
Me.ComboBox1.SetFocus
Me.ComboBox1.Value = "Type text to open a list of choices"
End Sub
Когда я запускаюкод, я получаю
Ошибка времени выполнения '94' Неправильное использование Null
в str = Me.ComboBox1.Value
Я пробовал парудругих потоков, а также пытался использовать нотацию Nz, но Excel VBA не распознает ее.
Любая помощь будет оценена. Я могу играть дальше и все еще учиться другими способами, но, к сожалению, для этого решения не хватает времени.