Notifications
Clear all

Userform: sair somente se todas as textbox forem preenchidas

20 Posts
5 Usuários
0 Reactions
3,284 Visualizações
(@alanisfcsm)
Posts: 0
Trusted Member
Topic starter
 

Boa tarde.
Seria possível em uma userform habilitar o botão sair somente se todas as textbox forem preenchidas?

 
Postado : 11/05/2016 10:29 am
Basole
(@basole)
Posts: 487
Reputable Member
 

Segue exemplo que verifica se os textBox estao vazios informando o nome do respectivo.
Coloque a chamada Verif_Textbox_Vazias_ no evento do seu botao...

Sub Verif_Textbox_Vazias_()
Dim TxtObj As Object
For Each TxtObj In Me.Controls
If TxtObj.Name Like "TextBox*" Then
If TxtObj = vbNullString Then
MsgBox "Preencha os dados da parcela " & TxtObj.Tag,64,"Atencao"
End If
End If
Next
End Sub

No evento initialize inseira o carregamento da propriedade .Tag

Private Sub UserForm_Initialize()

    Me.TextBox1.Tag = "Parcela 1"
    Me.TextBox2.Tag = "Parcela 2"
    Me.TextBox3.Tag = "Parcela 3"
    Me.TextBox4.Tag = "Parcela 4"
    Me.TextBox5.Tag = "Parcela 5"
    Me.TextBox6.Tag = "Parcela 6"
    Me.TextBox7.Tag = "Parcela 7"
    Me.TextBox8.Tag = "Parcela 8"

End Sub

Click em se a resposta foi util!

 
Postado : 11/05/2016 11:09 am
(@alanisfcsm)
Posts: 0
Trusted Member
Topic starter
 

Boa tarde Basole.

Depois de verificar a "parcela 08" a userform fecha.

 
Postado : 11/05/2016 11:43 am
(@alanisfcsm)
Posts: 0
Trusted Member
Topic starter
 

Agradeço a paciência.
O código verifica, mas depois de verificar a última parcela a userform fecha.
Teria como colocar em loop (estou chutando).

 
Postado : 11/05/2016 12:04 pm
Basole
(@basole)
Posts: 487
Reputable Member
 

Segue o codigo com as alteracoes incorporado no evento do seu botao sair e se algum textbox nao for preenchido aparecera a msg e a macro sera interrompida.

Private Sub CommandButton3_click()
    Dim TxtObj As Object
    For Each TxtObj In Me.Controls
        If TxtObj.Name Like "TextBox*" Then
            If TxtObj = vbNullString Then
                MsgBox "Preencha os dados da parcela " & TxtObj.Tag, 64, "Atencao"
                Exit Sub
            End If
        End If
    Next
    Unload Me
End Sub

Click em se a resposta foi util!

 
Postado : 11/05/2016 12:36 pm
(@alanisfcsm)
Posts: 0
Trusted Member
Topic starter
 

Quase lá...
Agora ele não sai, mesmo com os campos preenchidos.
Obrigado pela atenção e paciência....

 
Postado : 11/05/2016 2:42 pm
(@edivan)
Posts: 119
Estimable Member
 

Ele não fecha por que você tem alguns TextBox que não aparecem no userform quando ele é executado, dessa forma sempre haverá textbox vazio.... apague os textbox que você não usa e faça os testes ou deixe todos eles visíveis...

 
Postado : 11/05/2016 3:33 pm
(@alanisfcsm)
Posts: 0
Trusted Member
Topic starter
 

Bom dia.

hummm... entendi! apaguei a textbox8 :)
Quando eu uso as 8 parcelas funciona exatamente do jeito que você disse.
Mas a minha idéia é que o usuário aqui na empresa não precise usar calculadora. Dependendo da quantidade de parcelas definida pela célula SET!X213, a última parcela sempre será automática.

Não sei mais como fazer... pensando aqui... :oops:

 
Postado : 12/05/2016 5:58 am
(@mprudencio)
Posts: 2749
Famed Member
 

Seja mais especifico...

Afinal o que vc esta desenvolvendo, qual o objetivo da planilha????

Se vc nao usa todas as textbox do formulario, sempre vai dar problema...

Dependendo do que vc esta querendo fazer nem é necessario todas as abas.

Marcelo Prudencio
Microsoft Excel Brasil no Facebook

"Começar já é a metade do caminho."
Autor Desconhecido

Simplifica que simples fica.
Nicole Tomazella.

"O Simples é Sempre Melhor Que o Complicado"
Jorge Paulo Lemann.

 
Postado : 12/05/2016 7:34 am
(@alanisfcsm)
Posts: 0
Trusted Member
Topic starter
 

É parte de uma planilha de orçamento. ( imprime, envia por e-mail, salva o arquivo com n.°do orçamento em pdf.... )

Nela o vendedor digita a quantidade de parcelas. Na maioria das vezes o cliente paga parte do material antecipado.

Ex: 50%, R$ 1.053,00..... e nem sempre o valor e redondo.

O que está dando errado é a última parcela, que eu gostaria que fosse o total do pedido - as parcelas digitadas.

Optei pelo userform pois já tenho muita informação visual na planilha. E o pessoal aqui e bastante leigo. :|

 
Postado : 12/05/2016 8:15 am
(@alanisfcsm)
Posts: 0
Trusted Member
Topic starter
 

Errei no título do Tópico :oops:

Onde se lê: "Userform: sair somente se todas as textbox forem preenchidas"

Leia-se: "Userform: sair somente se algumas textbox definidas forem preenchidas."

Me expressei mal, peço desculpas

 
Postado : 12/05/2016 8:31 am
(@mprudencio)
Posts: 2749
Famed Member
 

Neste caso qual o criterio para que seja permitido que o formulario fechar?

Marcelo Prudencio
Microsoft Excel Brasil no Facebook

"Começar já é a metade do caminho."
Autor Desconhecido

Simplifica que simples fica.
Nicole Tomazella.

"O Simples é Sempre Melhor Que o Complicado"
Jorge Paulo Lemann.

 
Postado : 12/05/2016 10:58 am
(@alanisfcsm)
Posts: 0
Trusted Member
Topic starter
 

Olá

O que define o número de parcelas é a célula X213 ( quantidade de parcelas de 2 a 8 )

As condições para que o "botão sair" funcione são:

ex: Se o número de parcelas for 2 então o textbox1 deve star preenchido
Se o número de parcelas for 3 então os textbox1 e textbox2 devem star preenchidos
Se o número de parcelas for 4 então os textbox1 , textbox2 e textbox3 devem star preenchidos
Se o número de parcelas for 5 então os textbox1 , textbox2 , textbox3 e textbox4 devem star preenchidos
Se o número de parcelas for 6 então os textbox1 , textbox2 , textbox3 , textbox4 e textbox5 devem star preenchidos
Se o número de parcelas for 7 então os textbox1 , textbox2 , textbox3 , textbox4 , textbox5 e textbox6 devem star preenchidos
Se o número de parcelas for 8 então os textbox1 , textbox2 , textbox3 , textbox4 , textbox5 , textbox6 e textbox7 devem star preenchidos

 
Postado : 14/05/2016 2:44 pm
(@mprudencio)
Posts: 2749
Famed Member
 

Que mal lhe pergunte essa planilha tem que função para que ela serve???

So nao entendi uma coisa se vc digita a quantidade de parcelas na planilha, pq nao faz tudo na propria planilha????

Marcelo Prudencio
Microsoft Excel Brasil no Facebook

"Começar já é a metade do caminho."
Autor Desconhecido

Simplifica que simples fica.
Nicole Tomazella.

"O Simples é Sempre Melhor Que o Complicado"
Jorge Paulo Lemann.

 
Postado : 14/05/2016 3:18 pm
Basole
(@basole)
Posts: 487
Reputable Member
 

Minha sugestao é tornar visivel as textbox de acordo com o numero de Parcelas indicado na celula X213
No evento initialize o codigo torna oculto todas as textbox, carregas as .tags com os nomes das parcelas, em seguida torna visivel as textbox de acordo a qtd de parcelas na referida celula de parcelas.
E no codigo que verifica se as textbox foram preenchidas adicionei + uma codicao, e ficou assim:

 If TxtObj = vbNullString And TxtObj.Visible = True Then ' se o textbox estiver vazio e visivel
 MsgBox "Preencha os dados da parcela " & TxtObj.Tag, 64, "Atencao"
                Exit Sub

Click em se a resposta foi util!

 
Postado : 14/05/2016 4:35 pm
Página 1 / 2