Validando os campos...
 
Notifications
Clear all

Validando os campos de um Formulário

7 Posts
1 Usuários
0 Reactions
1,541 Visualizações
(@fernandofernandes)
Posts: 43750
Illustrious Member
Topic starter
 

Caros amigos criei um formulário com alguns campos obrigatórios. Inicialmente validei os mesmos usando a rotina "CLICK()", que é executada ao acionar um botão de confirmação no final do formulário. O inconveniente desta rotina é que a validação é realizada somente após a digitação de todos os campos. Tentei a rotina "BEFOREUPDATE" para validar cada um dos campos logo após a digitação do mesmo, mas quando ocorre um erro não consigo retornar ao campo, a não ser que eu clique diretamente no campo. Usei o comando SETFOCUS mas não funcionou como na rotina "CLICK()". O que fazer ?

 
Postado : 18/10/2011 9:34 am
(@fernandofernandes)
Posts: 43750
Illustrious Member
Topic starter
 

Carlos,

Primeiro, se está se referindo a um CommndButton
usando a rotina "CLICK()", que é executada ao acionar um botão de confirmação, "Click" é um dos Eventos pertencentes ao Objeto CommandButton, rotina são as instruções que estão associadas ao pressionarmos o mesmo, ou seja o que se encontra entre :

Private Sub CommandButton1_Click()' O Clique no Botão

	Executa sua rotina

End Sub

'E a finalização
Então informe o que se encontra entre estas linhas.

Segundo : a validação é realizada somente após a digitação de todos os campo ?
Quais Campos, qual Validação ? Qual a Rotina está utilizando ?

Como pode ver necessitamos de informações mais expecificas e detalhadas para poder dar uma resposta positiva.

Fico no aguardo.

[]s

 
Postado : 18/10/2011 10:18 am
(@fernandofernandes)
Posts: 43750
Illustrious Member
Topic starter
 

Mauro obrigado pela atenção!

A rotina para o campo é este:

Private Sub TextBox1_BeforeUpdate(ByVal Cancel As msforms.ReturnBoolean)

Cancel = True

If Not IsNumeric(TextBox1) Or IsEmpty(TextBox1) Then
MsgBox ("Você digitou um Número da Informação Inválido !"), vbCritical, "Testando Número da Informação Fiscal"
TextBox1.SetFocus
TextBox1.Value = vbNullString
Else
Cancel = False
End If

End Sub

Anteriormente esta rotina foi executada na versão 2000 do Excel. Na ocorência do erro, o cursor não retornava automaticamente para o campo, apesar do comando SetFocus.

Ontem à noite executei em outro micro agora com versão 2007 do Excel. E agora funcionou conforme previsto.

Minha pergunta agora é : existe uma limitação na versão anterior para o comando SetFocus ?

 
Postado : 19/10/2011 8:10 am
(@fernandofernandes)
Posts: 43750
Illustrious Member
Topic starter
 

Carlos, com esta rotina não tem nenhum problema, testei a mesma no Excel 2003 e funcionou perfeitamente, e até onde sei, o SetFocus continua ativo em todas as versões.

Se não tiver nenhuma outra instrução que esteja utilizando Cancel=True ou False não é para ter problemas não.

[]s

 
Postado : 19/10/2011 1:43 pm
(@fernandofernandes)
Posts: 43750
Illustrious Member
Topic starter
 

Pois é Mauro, na versão do Excel 2003 em minha casa de fato funciona perfeitamente, mas no meu trabalho na versão 2000, o problema continua ocorrendo conforme relatado.

 
Postado : 20/10/2011 7:32 am
(@fernandofernandes)
Posts: 43750
Illustrious Member
Topic starter
 

Carlos, infelizmente não tenho o 2000 para testar, mas você pode ver no site da Microsoft sobre algumas atualiizações nesta versão, quem sabe resolva.
Atualização do Office 2000: Service Pack 3 (SP3)
http://www.microsoft.com/downloads/deta ... lang=pt-br

Ou, Pesquisar em :
Suporte Microsoft Office 2000
http://support.microsoft.com/ph/2484/pt

O único porem na atualização, é que o seu se encontra na empresa, por isto tem de tomar alguns cuidados :
Primeiro ver se é permitido, e
Segundo, por não saber quais as consequencias, o ideal é fazer um Backup de tudo e ativar a restauração do Sistema para poder reverter se ocorrer algum problema.

Fica por sua conta e risco.

[]s

 
Postado : 20/10/2011 9:38 pm
(@fernandofernandes)
Posts: 43750
Illustrious Member
Topic starter
 

De qualquer forma muito obrigado pela atenção . Abraços !

 
Postado : 21/10/2011 4:34 pm