Notifications
Clear all

Verificar texto do combobox

6 Posts
3 Usuários
0 Reactions
1,627 Visualizações
(@lorenzon)
Posts: 355
Honorable Member
Topic starter
 

Pessoal, boa tarde!

Ao abrir a userform, um determinado combobox é carregado através do additem.

Selecionando um item no combobox, o código abaixo verifica se o mesmo é permitido ou não.

Dim sSelecao
sSelecao = ComboBox1.Value
Select Case sSelecao

Case "RENDA"
Case "EDUCAÇÃO"
Case "TRANSPORTE"
Case "VESTIMENTA"

Case Else ' Outros valores.

ComboBox1.SetFocus
MsgBox "Centro de custo inexistente. Por favor, verifique-o e tente novamente", vbCritical, "Atenção!"

ComboBox1.Text = ""

ComboBox1.BackColor = &H80000018

Exit Sub

End Select

A minha necessidade é fazer com que o código verifique se os dados são permitidos ou não, através de células, exemplo:

Dim sSelecao
sSelecao = ComboBox1.Value
Select Case sSelecao

Case [a1]

Case Else ' Outros valores.

ComboBox1.SetFocus
MsgBox "Centro de custo inexistente. Por favor, verifique-o e tente novamente", vbCritical, "Atenção!"

ComboBox1.Text = ""

ComboBox1.BackColor = &H80000018

Exit Sub

End Select

 
Postado : 13/01/2015 12:42 pm
(@wagner-morel-vidal-nobre)
Posts: 4063
Famed Member
 

Lorenzon,

Boa Tarde!

Não sei se entendi corretamente a sua necessidade... o que você quer é comprar o valor que é selecionado no ComboBox com os valores existente na Coluna A, da linha 1 a linha 150? É isso?

Se for isso, eu faria assim:

Dim sSelecao
Dim i as long
sSelecao = ComboBox1.Value
For i = 1 to 150
     If Range ("A" & i).Value <> sSelecao Then
          ComboBox1.SetFocus
MsgBox "Centro de custo inexistente. Por favor, verifique-o e tente novamente", vbCritical, "Atenção!"

ComboBox1.Text = ""

ComboBox1.BackColor = &H80000018

Exit Sub
 
Postado : 13/01/2015 12:53 pm
(@wagner-morel-vidal-nobre)
Posts: 4063
Famed Member
 

Código saiu errado. Complementando:

    Dim sSelecao
    Dim i as long
    sSelecao = ComboBox1.Value
    For i = 1 to 150
         If Range ("A" & i).Value <> sSelecao Then
              ComboBox1.SetFocus
              MsgBox "Centro de custo inexistente. Por favor, verifique-o e tente novamente", vbCritical, "Atenção!"

              ComboBox1.Text = ""

               ComboBox1.BackColor = &H80000018

               Exit Sub
        End If
   Next

 
Postado : 13/01/2015 12:54 pm
(@lorenzon)
Posts: 355
Honorable Member
Topic starter
 

perfeito

 
Postado : 14/01/2015 4:44 am
(@wagner-morel-vidal-nobre)
Posts: 4063
Famed Member
 

Lorenzon,

Só mais uma coisa que observei somente depois que enviei esse código: Esse código só serve se você quiser que, ao encontrar a primeira ocorrência de não coincidência de dados, o mesmo apresente a mensagem e saia da procedure. Todavia, se você quiser checar, primeiramente, todos os valores da coluna A, para somente depois de verificar todos, em casa de não coincidência dos dados, apresentar a mensagem e sair, o código deve ser alterado para este:

        Dim sSelecao
        Dim i as long
        Dim NãoAchou as Boolean
        sSelecao = ComboBox1.Value
        NãoAchou = False
        For i = 1 to 150
             If Range ("A" & i).Value <> sSelecao Then
                  NãoAchou = True
             End If
        Next

        If NãoAchou = True then
                  ComboBox1.SetFocus
                  MsgBox "Centro de custo inexistente. Por favor, verifique-o e tente novamente", vbCritical, "Atenção!"

                  ComboBox1.Text = ""

                   ComboBox1.BackColor = &H80000018

                   Exit Sub
         End If

Por gentileza, vote positivamente clicando na mãozinha ao lado da ferramenta Citar

 
Postado : 14/01/2015 6:19 am
(@necron)
Posts: 117
Estimable Member
 

Isso me ajudou! Complementei uma macro que estava lenta na execução!

Tks!

 
Postado : 14/01/2015 6:24 am