Notifications
Clear all

Verificar textbox e combobox vazias

4 Posts
2 Usuários
0 Reactions
944 Visualizações
Fernando Fernandes
(@fernandofernandes)
Posts: 43750
Illustrious Member
Topic starter
 

Bom dia!

Tenho uma planilha com formulário e utilizo o procedimento abaixo para verificar se existem textbox vazias antes de gravar os dados, mas preciso incluir mais duas combobox.

For Each CxTexto In UserForm1.Controls
        If Left(CxTexto.Name, 3) = "txb" Then
            If CxTexto.Text = "" Then
                temtxbVazio = True
                MsgBox "Existe caixa de texto vazia", vbCritical, "ERRO"
                CxTexto.SetFocus
                Exit Sub
            End If
        End If
    Next
If temtxbVazio = False Then

Desde já agradeço!

Doni

Existem mil maneiras de preparar Neston. Invente a sua!
http://www.youtube.com/ExpressoExcel

 
Postado : 23/09/2016 8:13 am
EdsonBR
(@edsonbr)
Posts: 1057
Noble Member
 

Bom dia, Doni...

No loop vc pode testar qual tipo de controle é, usando TypeOf, e então prosseguir para cada tipo de controle. Só sugiro mudar o nome da variável de CxTexto para ctrl, por se tratar agora não mais só de caixas de texto, mas também de comboboxes/outros. O rumo a seguir seria por essa via:

  Dim ctrl As MSForms.Control
  For Each ctrl In UserForm1.Controls
    If TypeOf ctrl Is MSForms.TextBox Then
      '...
    ElseIf TypeOf ctrl Is MSForms.ComboBox Then
      '...
    End If
  Next ctrl

 
Postado : 23/09/2016 9:12 am
Fernando Fernandes
(@fernandofernandes)
Posts: 43750
Illustrious Member
Topic starter
 

Edson, Boa tarde!

Não funcionou.

Doni

Existem mil maneiras de preparar Neston. Invente a sua!
http://www.youtube.com/ExpressoExcel

 
Postado : 23/09/2016 10:22 am
Fernando Fernandes
(@fernandofernandes)
Posts: 43750
Illustrious Member
Topic starter
 

Doni, só dizer "Não funcionou" é bem vago, você deveria informar o que que não deu certo e ter postado a rotina que você ajustou com a dica do EdsonBR uma vez que ele passou o principio e voce deve complementa-la com o que pretende, ou seja : Se nos nomes dos Textboxs temos as 3 primeiras letras "txb" e supondo que os ComboBox as 3 primeiras letras seja "cbo", identamos da seguinte forma :

Substitui a Variável "ctrl" que o Edson colocou pela sua por desconhecer o seu projeto e evitar erros, ficando assim :

Private Sub CommandButton1_Click()
    Dim CxTexto As MSForms.Control
      
    For Each CxTexto In UserForm1.Controls
        If TypeOf CxTexto Is MSForms.TextBox Then
            If Left(CxTexto.Name, 3) = "txb" Then
                If CxTexto.Text = "" Then
                    temtxbVazio = True
                    MsgBox "Existe caixa de texto vazia", vbCritical, "ERRO"
                    CxTexto.SetFocus
                    Exit Sub
                End If
            End If
            
        ElseIf TypeOf CxTexto Is MSForms.ComboBox Then
              
            If Left(CxTexto.Name, 3) = "cbo" Then
                If CxTexto.Text = "" Then
                    temtxbVazio = True
                    MsgBox "Existe caixa de texto vazia", vbCritical, "ERRO"
                    CxTexto.SetFocus
                    Exit Sub
                End If
            End If
        End If
        
    Next CxTexto

End Sub

Faça os testes e veja se é isto.

[]s

Existem mil maneiras de preparar Neston. Invente a sua!
http://www.youtube.com/ExpressoExcel

 
Postado : 23/09/2016 11:14 am