Vídeo recomendado
https://youtu.be/diWPPPhW-9E

saber quantas textboxs foram preenchidas no formulario

Fórum para dúvidas sobre os fundamentos da linguagem de programação Visual Basic no contexto do VBA
pedro_mexico
Consultor
Consultor
Mensagens: 285
Registrado em: Qua Dez 09, 2015 5:54 pm

saber quantas textboxs foram preenchidas no formulario

Mensagem por pedro_mexico »

Boa tarde amigos,
estou á procura de ajuda:
tenho um formulario e queria que ao gravar na planilha os dados das textboxs, ela numa coluna especifica me dê a soma das textboxs que foram preenchidas, ou se for mais facil, criar mais uma textbox que de esse resultado.

Exemplo:
o formulario tem 4 textboxs(textbox1,textbox2,textbox3,textbox4)
preenchi a textbox1 e a textbox2.
o codigo que tenho é cada textbox ser copiada para colunas diferentes da planilha, mas neste caso dava um resultado de 2 , era enviado para uma outra coluna.

a soma que quero não é valores escritos nas textboxs,mas sim ir á planilha á coluna e saber que no preenchimento daqueles dados, so foram preenchida 2 textboxs das 4 existentes.

obrigado


Disable adblock

This site is supported by ads and donations.
If you see this text you are blocking our ads.
Please consider a Donation to support the site.


Avatar do usuário
joseA
Jedi
Jedi
Mensagens: 1048
Registrado em: Qui Out 22, 2009 7:22 am
Localização: Cel. Fabriciano - MG

Re: saber quantas textboxs foram preenchidas no formulario

Mensagem por joseA »

Boa tarde,

Não entendi bem um que pretendes, mas segue um norte:

Código: Selecionar todos

Sub CommandButton1_Click()
    Dim fTextBox As Object
    Dim xTxtName As String
    Dim xEptTxtName As String
    For Each fTextBox In UserForm1.Controls
        If TypeName(fTextBox) = "TextBox" Then
            If fTextBox.Text = "" Then
                xEptTxtName = xEptTxtName & fTextBox.Name & " is empty" & vbNewLine
            Else
                xTxtName = xTxtName & fTextBox.Name & " is not empty" & vbNewLine
            End If
        End If
    Next
    If xEptTxtName <> "" Or xTxtName <> "" Then
        MsgBox xEptTxtName & vbNewLine & xTxtName
    End If
End Sub
Vai retornar numa msgbox o que foi preenchido e o que não foi preenchido....


pedro_mexico
Consultor
Consultor
Mensagens: 285
Registrado em: Qua Dez 09, 2015 5:54 pm

Re: saber quantas textboxs foram preenchidas no formulario

Mensagem por pedro_mexico »

Bom dia JoseA,

obrigado pela resposta.
a ideia que pretendo é ao clicar no botao gravar, ele copie o valor das textboxs para a respetiva coluna da planilha(isso ja ele faz) e numa ultima coluna defenida por mim ele saiba quantas das textboxs foram preenchidas.
envio dados ema nexo para tentar perceber.

mais uma vez obrigado
Anexos
exemplo.rar
(117.78 KiB) Baixado 58 vezes


Avatar do usuário
joseA
Jedi
Jedi
Mensagens: 1048
Registrado em: Qui Out 22, 2009 7:22 am
Localização: Cel. Fabriciano - MG

Re: saber quantas textboxs foram preenchidas no formulario

Mensagem por joseA »

Apague o código do seu CommandButton1 e copie/cole:

Código: Selecionar todos

Private Sub CommandButton1_Click()
    Folha1.Activate
Dim cont, Vaz
Vaz = 0
For cont = 1 To 4
If Len(Me.Controls("TextBox" & cont)) > 0 Then
Vaz = Vaz + 1


End If
Next cont

'Selecionar a célula A3
Range("A2").Select

'Procurar a primeira célula vazia
Do

  If Not (IsEmpty(ActiveCell)) Then

      ActiveCell.Offset(1, 0).Select

  End If

    Loop Until IsEmpty(ActiveCell) = True
    
    'carregar os dados digitados nas caixas de texto para a planilha
    
    ActiveCell.Value = UserForm1.TextBox1.Value
    ActiveCell.Offset(0, 1).Value = UserForm1.TextBox2.Value
    ActiveCell.Offset(0, 2).Value = UserForm1.TextBox3.Value
    ActiveCell.Offset(0, 3).Value = UserForm1.TextBox4.Value
    ActiveCell.Offset(0, 4).Value = Vaz

    
    If MsgBox("Registo Gravado com Sucesso" + vbCrLf + "Continuar a Registar?", vbQuestion + vbYesNo) = vbYes Then
    'Limpar as caixas de texto
   UserForm1.TextBox1.Value = Empty
   UserForm1.TextBox2.Value = Empty
   UserForm1.TextBox3.Value = Empty
    UserForm1.TextBox4.Value = Empty
 
    
    'Colocar o foco na primeira caixa de texto
    UserForm1.TextBox1.SetFocus
     
    Else
    
    UserForm1.TextBox1.Value = Empty
   UserForm1.TextBox2.Value = Empty
   UserForm1.TextBox3.Value = Empty
    UserForm1.TextBox4.Value = Empty
 
    

End If
End Sub


Disable adblock

This site is supported by ads and donations.
If you see this text you are blocking our ads.
Please consider a Donation to support the site.


pedro_mexico
Consultor
Consultor
Mensagens: 285
Registrado em: Qua Dez 09, 2015 5:54 pm

Re: saber quantas textboxs foram preenchidas no formulario

Mensagem por pedro_mexico »

JoseA,

obrigado, é mesmo esse o efeito.
vou adaptar ao meu formulario.

so umapergunta para ver se entendi o codigo:
If Len(Me.Controls("TextBox" & cont)) > 0 Then
, quer dizer que todas as textboxs que eu tiver no formulario foram maior que 0, elas vao fazer o codigo funcionar, é isso.

muito obrigado pela ajuda


Avatar do usuário
joseA
Jedi
Jedi
Mensagens: 1048
Registrado em: Qui Out 22, 2009 7:22 am
Localização: Cel. Fabriciano - MG

Re: saber quantas textboxs foram preenchidas no formulario

Mensagem por joseA »

Isso, vai verificar se os TextBox's tenham um valor maior que zero, ou seja, estejam preenchidos. Quando testar ai vai ver que retorna lá na coluna desejada o nº de preenchidos.

Saudações


pedro_mexico
Consultor
Consultor
Mensagens: 285
Registrado em: Qua Dez 09, 2015 5:54 pm

Re: saber quantas textboxs foram preenchidas no formulario

Mensagem por pedro_mexico »

boa tarde JoseA,

obrigado pela ajuda e explicaçao.
Obrigado


pedro_mexico
Consultor
Consultor
Mensagens: 285
Registrado em: Qua Dez 09, 2015 5:54 pm

Re: saber quantas textboxs foram preenchidas no formulario

Mensagem por pedro_mexico »

joseA boa tarde,

estava a tentar adaptar no meu formulario e percebi uma coisa, primeiro com combobox, mas isso julgo ter adaptado certo, so troquei o codigo para ler as combobox, mas eu no formulario tenho outras comboboxs que nao entrao nesta contagem, existe maneira de colocar so as comboboxs que quero a fazer a soma,

exemplo:
ComboboxIPO é o nome que tenho so para as combobox que quero fazer a contagem, tenho comboboxIPO,comboboxIPO1,comboboxIPO2,comboboxIPO3,comboboxIPO4,comboboxIPO5,

tentei nesta fase do codigo

Código: Selecionar todos

Dim cont, Vaz
Vaz = 0
For cont = 1 To 4
If Len(Me.Controls("TextBox" & cont)) > 0 Then
Vaz = Vaz + 1
substituir a "textbox" por comboboxIPO,mas ela so fez a contagem de 1 combobox preenchida, a que tem esse nome,

tentei tb

Código: Selecionar todos

Dim cont, Vaz
Vaz = 0
For cont = 1 To 6
If Len("UserForm_Menu.ComboBoxCodIPO" & "UserForm_Menu.ComboBoxCodIPO1" & "UserForm_Menu.ComboBoxCodIPO2" _
& "UserForm_Menu.ComboBoxCodIPO3" & "UserForm_Menu.ComboBoxCodIPO4" & "UserForm_Menu.ComboBoxCodIPO5" & cont) > 0 Then
Vaz = Vaz + 1
End If
Next cont
, aqui dá sempre como as 6 tivessem preenchidas

se colocar

Código: Selecionar todos

Dim cont, Vaz
Vaz = 0
For cont = 1 To 6
If Len(Me.Controls("UserForm_Menu.ComboBoxCodIPO" & "UserForm_Menu.ComboBoxCodIPO1" & "UserForm_Menu.ComboBoxCodIPO2" _
& "UserForm_Menu.ComboBoxCodIPO3" & "UserForm_Menu.ComboBoxCodIPO4" & "UserForm_Menu.ComboBoxCodIPO5" & cont) > 0 Then
Vaz = Vaz + 1


End If
Next cont
assim dá erro


Disable adblock

This site is supported by ads and donations.
If you see this text you are blocking our ads.
Please consider a Donation to support the site.


Responder