Bom dia a todos.
Estou com dificuldades numa coisa que parece ser simples mas eu sou um pouco leigo ainda no VBA... Mas vamos lá:
Tenho uma macro de cadastro de itens. Nela, tenho duas combobox dependentes umas da outra. A ideia é que, se na 1ª eu escolho "NS", a segunda puxe uma lista x, mas se eu escolher na 1ª combobox a opção "SS" ao invés, a segunda combobox puxe a lista y.
Meu código já está fazendo isso. O único problema é que ele faz isso uma vez só, ou seja, se eu clicar em NS, ele puxa a lista certa, mas se eu sem querer cliquei no NS mas na verdade queria o SS, essa segunda combobox não é atualizada a não ser que eu saia da macro, e volte de novo.
A minha ideia é deixar bem amarrado, de forma que se o usuário errou, ele consiga selecionar a outra opção e ter de imediato a nova lista, sem que o usuário tenha que sair do formulário e ter que entrar de novo.
Desde já, muito obrigado. Segue planilha em anexo e o código:
Private Sub ComboBox2_Change()
End Sub
Private Sub ComboBox3_Change()
If ComboBox3.Value = "NS" Then
For k = 1 To 1000
EquipamentoNS = Plan2.Cells(k, 2).Value
If EquipamentoNS = "" Then
GoTo Fim2
End If
UserForm1.ComboBox2.AddItem EquipamentoNS
Fim2:
Next k
Else
For k = 1 To 1000
EquipamentoSS = Plan2.Cells(k, 3).Value
If EquipamentoSS = "" Then
GoTo Fim3
End If
UserForm1.ComboBox2.AddItem EquipamentoSS
Fim3:
Next k
End If
End Sub
Private Sub CommandButton1_Click()
Dim ultimalinha As Object
Set ultimalinha = Plan1.Range("A100").End(xlUp)
ultimalinha.Offset(1, 0).Value = CDate(TextBox1.Text)
ultimalinha.Offset(1, 1).Value = ComboBox1.Text
ultimalinha.Offset(1, 2).Value = CDbl(TextBox3.Text)
ultimalinha.Offset(1, 3).Value = ComboBox2.Text
MsgBox "Registro Inserido/Data Received", 6, "Inserir/Insert"
resposta = MsgBox("Deseja inserir outro registro", 36, "Ocyan")
If resposta = vbYes Then
TextBox1.Text = ""
ComboBox1.Text = ""
TextBox3.Text = ""
ComboBox2.Text = ""
TextBox1.SetFocus
Else
Unload Me
End If
End Sub
Private Sub CommandButton2_Click()
End
End Sub
Private Sub UserForm_Initialize()
'Me.ComboBox1.List = Application.WorksheetFunction.Transpose(Plan2.Range("A1:A8"))
Dim Gas, Sonda, EquipamentoNS, EquipamentoSS As String
For i = 1 To 1000
Gas = Plan2.Cells(i, 1).Value
If Gas = "" Then
GoTo Fim
End If
UserForm1.ComboBox1.AddItem Gas
Fim:
Next i
For j = 1 To 1000
Sonda = Plan2.Cells(j, 4).Value
If Sonda = "" Then
GoTo Fim1
End If
UserForm1.ComboBox3.AddItem Sonda
Fim1:
Next j
End Sub
Postado : 28/02/2018 5:18 am