none
Contar TextBox preenchidos (somente alguns) RRS feed

  • Pergunta

  • Prezados,

    Estou querendo contar 7 textbox se estiverem preenchidos vou multiplicar para cada um o valor de 10.57, porem não estou conseguindo fazer essa verificação... fiz o código abaixo:

    Sub btnCalcular_Click()
    
    Dim contar As Integer
    Dim controle As Control
    
    contar = 1
    
    For Each controle In Me.Controls
    If TypeOf controle Is TextBox Then
    If Not IsNull(controle.Value) And Left(controle.Name, 6) = "txtDp" & contar Then
    contar = contar + 1
    End If
    End If
    Next controle
    
    txtExames.Value = controle * 10.5
    
    End Sub

    segunda-feira, 19 de março de 2018 18:29

Respostas

  • Revolvido, Obrigado Ricardo Vba

    Dim somar As Double
    Dim contar As Integer
    Dim psq As Integer
    
    contar = 0
    
    For psq = 1 To 7
    If Len(Me("txtDp" & psq) & "") > 0 Then contar = contar + 1
    Next
    If contar = 1 Then
    soma = 10.5
    FormPlano.txtExames.Value = Format(soma, "#.#0")
    
    ElseIf contar = 0 Then
    
    Else
    soma = contar * 10.5
    FormPlano.txtExames.Value = Format(soma, "#.#0")
    End If
    

    • Marcado como Resposta WillGreco segunda-feira, 19 de março de 2018 22:25
    segunda-feira, 19 de março de 2018 22:25

Todas as Respostas

  • @WillGreco  não entendi pra que a varivel contar,  de qualquer forma, veja se é isso que deseja

    Sub btnCalcular_Click()
        Dim contar   As Integer
        Dim controle As Control
        
        contar = 1
        
        For Each controle In Me.Controls
            
            If TypeOf controle Is MSForms.TextBox Then
                If controle.Text <> "" Then controle.Value = controle.Value * 10.5
                contar = contar + 1
                
            End If
            
        Next controle
        
        
    End Sub


    Click em propor como resposta se foi util a voce. ricardodm@outlook.com.br

    segunda-feira, 19 de março de 2018 19:30
  • Caro @Ricardo VBA,

    Obrigado pelo apoio neste caso, mas vou lhe explicar melhor o caso:

    No meu UserForm tenho diversas textBox tipo umas 50... porem preciso verificar somente em 7 se estão preenchidas, e caso estejam preciso fazer o seguinte calculo... A cada usuário preencha no textbox (txtDp1) vou passar para uma outra textbox (txtExames) o valor de 10.50... caso ele informe mais um valor em outra textbox ele somaria mais um valor de 10.50 dentro da txtExames.

    A variável contar é para concatenar com o texto "txtDp" & contar... assim ficando txtDp1 que corresponde ao primeiro textbox que quero verificar se esta preenchido e caso estiver fazer o calculo acima.

    segunda-feira, 19 de março de 2018 19:45
  • Este código que montei agora esta aparecendo o valor quando preencho o primeiro txtDp1 porem quando insiro outro valor no txtDp2 ele não esta somando com o valor anterior...

    Sub btnCalcular_Click()
    
        Dim contar As Integer
        Dim controle As Control
    
        contar = 1
    
        For Each controle In Me.Controls
            If TypeOf controle Is TextBox Then
                If Not IsNull(controle .Value) And Left(controle .Name, 6) = "txtDp" & contar  Then
                    contar = contar + 1
                End If
            End If
    
        txtExames.Value = contar * 10.5
    Next controle 
    
    End Sub

    segunda-feira, 19 de março de 2018 19:50
  • Veja se é isso que entendi

    Sub btnCalcular_Click()
        Dim contar   As Integer
        Dim controle As Control
        Dim soma As Double
        
        contar = 1
        
        For Each controle In Me.Controls
            
            If TypeOf controle Is MSForms.TextBox Then
                
                If controle.Text <> "" And _
                VBA.IsNumeric(controle.Text) And _
                VBA.Left(controle.Name, 6) = "txtDp" & contar Then
                soma = soma + (controle.Value * 10.5)
                End If
                contar = contar + 1
                
            End If
            
        Next controle
        
        txtExames.Value = soma
        
    End Sub


    Click em propor como resposta se foi util a voce. ricardodm@outlook.com.br

    segunda-feira, 19 de março de 2018 19:55
  • O valor em txtExames.Value = soma esta vindo zerado agora... mas a lógica é essa mesmo.

    segunda-feira, 19 de março de 2018 20:00
  • Bom pelo que entenidi, para cada dependente, uma taxa de 10,50 

    Substitua as linhas abaixo

     soma = soma + 10.5
    
    
    
     txtExames.Value = VBA.Format(soma, "##0.00")
    
    


    Click em propor como resposta se foi util a voce. ricardodm@outlook.com.br

    segunda-feira, 19 de março de 2018 20:09
  • Isso mesmo  para cada dependente, uma taxa de 10,50... o código ainda continua zerado... 

    segunda-feira, 19 de março de 2018 20:29
  • Porem quando informo na variavel soma o valor de 10.50 ela aparece mas não esta somando quando informo um segundo valor... será que a condição do IF esta sendo executada..?

    Dim contar   As Integer
        Dim controle As Control
        Dim soma As Double
        
        contar = 1
        soma = 10.5
        
        For Each controle In Me.Controls
            
            If TypeOf controle Is MSForms.TextBox Then
                
                If controle.Text <> "" And _
                VBA.IsNumeric(controle.Text) And _
                VBA.Left(controle.Name, 6) = "txtDp" & contar Then
                soma = soma + 10.5
                
                End If
                contar = contar + 1
                End If
            
             Next controle
             txtExames.Value = VBA.Format(soma, "##0.00")

    segunda-feira, 19 de março de 2018 20:31
  • Achei nessa condição ele não esta funcionando " If TypeOf controle Is MSForms.TextBox Then"... Tentei resolver mas não deu certo...
    • Editado WillGreco segunda-feira, 19 de março de 2018 21:04
    segunda-feira, 19 de março de 2018 20:39
  • Revolvido, Obrigado Ricardo Vba

    Dim somar As Double
    Dim contar As Integer
    Dim psq As Integer
    
    contar = 0
    
    For psq = 1 To 7
    If Len(Me("txtDp" & psq) & "") > 0 Then contar = contar + 1
    Next
    If contar = 1 Then
    soma = 10.5
    FormPlano.txtExames.Value = Format(soma, "#.#0")
    
    ElseIf contar = 0 Then
    
    Else
    soma = contar * 10.5
    FormPlano.txtExames.Value = Format(soma, "#.#0")
    End If
    

    • Marcado como Resposta WillGreco segunda-feira, 19 de março de 2018 22:25
    segunda-feira, 19 de março de 2018 22:25