Мой код работает не так, как мне нравится.Я хочу, чтобы значения в выпадающем списке появлялись после того, как я выбрал другое значение в выпадающем списке.Например:
Private Sub ComboBox1_change()
Dim ultimaLin As Long, area As New Collection
Dim Value As Variant, temp() As Variant
Dim lin As Integer
On Error Resume Next
'A linha abaixo identifica a última linha'
ultimaLin = Sheets("Produtos").Range("A" & Rows.Count).End(xlUp).Row
'A linha abaixo refere-se a coluna que contém os dados da lista'
temp = Sheets("Produtos").Range("B2:B" & ultimaLin).Value
For Each Value In temp
If Len(Value) > 0 Then area.Add Value, CStr(Value)
Next Value
For Each Value In area
'Adicionando item ao ComboBox'
userform2.ComboBox1.AddItem Value
Next Value
Set area = Nothing
lin = 2
With Sheets("Produtos")
Do Until .Range("B" & lin).Value = ""
If .Range("B" & lin).Value = userform2.ComboBox1.Text Then
userform2.ComboBox2.AddItem .Range("A" & lin).Value
End If
lin = lin + 1
Loop
End With
userform2.Show
End Sub
Я делаю этот код для первого комбинированного списка, а я делаю его для второго:
Private Sub ComboBox1_change()
ComboBox2.Clear
Set sht = ThisWorkbook.Worksheets("Produtos")
ultimaLin = sht.Cells.Find("*", searchorder:=xlByRows,
searchdirection:=xlPrevious).Row
With Worksheets("Produtos").Range("b2:b" & ultimaLin)
If ComboBox1.Value = vbNullString Then
pesquisado = "*"
Else
pesquisado = ComboBox1.Value
End If
Set c = .Find("*" & pesquisado & "*", LookIn:=xlValues)
If Not c Is Nothing Then
firstAddress = c.Address
Do
ComboBox2.AddItem Cells(c.Row, 1).Value
Set c = .FindNext(c)
Loop While Not c Is Nothing And c.Address <> firstAddress
End If
End With
End Sub
Но когда я изменяю значение комбинированного списка 1, ничегоэто происходит в выпадающем списке2.Важно сказать, что первый код был в модуле, а второй - в коде пользовательской формы.