Notifications
Clear all

Combo box condicional para outra Combo Box

3 Posts
2 Usuários
0 Reactions
873 Visualizações
(@rodrigombc)
Posts: 8
Active Member
Topic starter
 

Boa tarde,

Ainda sou um pouco leigo com relação a VBA, portanto gostaria fielmente da ajuda de vocês. Segue meu problema.

Fiz uma macro que cadastra informações em outra aba da planilha (clicar na caixa da aba "instruções"-> inserir dados -> salva automaticamente na aba "Consumo de Gás".

Ao inserir os dados, existe uma combo box que lista alguns equipamentos (que estão na aba referência, coluna B).

Meu problema é o seguinte: ao clicar na caixa para inserir os dados, eu gostaria que existisse uma combo box para checar se a sonda é NS ou SS (tipo uma pergunta " é NS ou SS?". Caso o usuário escolher NS, a combo box do equipamento busca somente a lista da coluna B da aba referência, e caso o usuário escolha SS, então a combo box do equipamento busca somente a lista da coluna C da aba referência.

É possível fazer isso?

Segue a planilha em anexo. Obrigado desde já.

 
Postado : 26/02/2018 5:39 pm
(@klarc28)
Posts: 971
Prominent Member
 
Private Sub ComboBox3_Change()
if combobox3.value = "X" then
For k = 1 To 1000
    
    Equipamento = Plan2.Cells(k, 2).Value
    
    If Equipamento = "" Then
    GoTo Fim1
    End If
    
    UserForm1.ComboBox2.AddItem Equipamento

Fim1:
    
    Next k

else

For k = 1 To 1000
    
    Equipamento = Plan2.Cells(k, 3).Value
    
    If Equipamento = "" Then
    GoTo Fim1
    End If
    
    UserForm1.ComboBox2.AddItem Equipamento

Fim1:
    
    Next k
   end if
end sub
   
 
Postado : 27/02/2018 7:25 am
(@rodrigombc)
Posts: 8
Active Member
Topic starter
 

Meu amigo, muito obrigado. Porém encontrei outro problema:

Ao selecionar NS, ele carrega a lista da coluna 2 (aba referências). Porém, se eu por acaso eu queria SS ao invés, ao selecionar SS, a lista da combobox2 não é carregada com a coluna 3 (aba referências).

Existe algum método de meio que fazer um loop desse passo da combobox3 (ao clicar NS, a lista de equipamentos muda...ao clicar SS, a lista de equipamentos muda tbm...), tudo isso dentro do formulário, sem que eu precise sair dele, que pelo visto, só assim que ele atualiza a lista dos equipamentos novamente :(

Segue abaixo 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 : 27/02/2018 8:26 am