Ir para conteúdo
Fórum Script Brasil
  • 0

metodo SetFocus da caixa de texto (Excel VBA)


loyola

Pergunta

Olá,

Faço a critica de entrada de dados com duas caixas de texto: Na primeira caixa - quando a informação digitada estiver errada, limpo a caixa e estou tentando fazer com que o foco permaneça nesta caixa. Ao clicar em TAB, não funciona, veja a rotina:

Private Sub minhaCaixa01_AfterUpdate()

If Not IsNumeric(minhaCaixa01.Value) Then

MsgBox "DIGITE UM VALOR NUMÉRICO"

Me.minhaCaixa01.Value = ""

Me.minhaCaixa01.SetFocus

Exit Sub

End If

End Sub

O controle passa para a próxima caixa de texto. Uso excel 2007 ??? Me ajudem a encontrar o erro.

Link para o comentário
Compartilhar em outros sites

6 respostass a esta questão

Posts Recomendados

  • 0
No lugar de:

Me.minhaCaixa01.SetFocus

Insira:

Cancel = True

E para restringir a digitação somente para números:

Private Sub minhaCaixa01_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)

Select Case KeyAscii

Case 8, 48 To 57

Case Else

KeyAscii = 0

End Select

End Sub

Paulo, muito obrigado pela intervenção. Ainda preciso validar o numero digitado (entre um valor minimo e máximo). Ainda não funcionou, o controle vai para próxima caixa de texto. loyola.

Link para o comentário
Compartilhar em outros sites

  • 0
No lugar de:

Me.minhaCaixa01.SetFocus

Insira:

Cancel = True

E para restringir a digitação somente para números:

Private Sub minhaCaixa01_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)

Select Case KeyAscii

Case 8, 48 To 57

Case Else

KeyAscii = 0

End Select

End Sub

Paulo, muito obrigado pela intervenção. Ainda preciso validar o numero digitado (entre um valor minimo e máximo). Ainda não funcionou, o controle vai para próxima caixa de texto. loyola.

Encontrei uma codificação que resolve a validação de dados com SetFocus:

Private Sub minhaCaixa01_Exit(ByVal Cancel As MSForms.ReturnBoolean)

If (valEmprestimo < 1000) Or (valEmprestimo > 1500) Then

MsgBox "o valor do emprestimo deve estar entre 1000 e 1500)"

Me.valEmprestimo.Value = " "

Cancel = True

Me.valEmprestimo.SetFocus

Exit Sub

End If

Link para o comentário
Compartilhar em outros sites

  • 0
No lugar de:

Me.minhaCaixa01.SetFocus

Insira:

Cancel = True

E para restringir a digitação somente para números:

Private Sub minhaCaixa01_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)

Select Case KeyAscii

Case 8, 48 To 57

Case Else

KeyAscii = 0

End Select

End Sub

Paulo, muito obrigado pela intervenção. Ainda preciso validar o numero digitado (entre um valor minimo e máximo). Ainda não funcionou, o controle vai para próxima caixa de texto. loyola.

Encontrei uma codificação que resolve a validação de dados com SetFocus:

Private Sub minhaCaixa01_Exit(ByVal Cancel As MSForms.ReturnBoolean)

If (valEmprestimo < 1000) Or (valEmprestimo > 1500) Then

MsgBox "o valor do emprestimo deve estar entre 1000 e 1500)"

Me.valEmprestimo.Value = " "

Cancel = True

Me.valEmprestimo.SetFocus

Exit Sub

End If

Link para o comentário
Compartilhar em outros sites

  • 0
No lugar de:

Me.minhaCaixa01.SetFocus

Insira:

Cancel = True

E para restringir a digitação somente para números:

Private Sub minhaCaixa01_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)

Select Case KeyAscii

Case 8, 48 To 57

Case Else

KeyAscii = 0

End Select

End Sub

Paulo, muito obrigado pela intervenção. Ainda preciso validar o numero digitado (entre um valor minimo e máximo). Ainda não funcionou, o controle vai para próxima caixa de texto. loyola.

Encontrei uma codificação que soluciona o problema da validação de dados com SetFocus:

Private Sub minhaCaixa01_Exit(ByVal Cancel As MSForms.ReturnBoolean)

If (minhaCaixa01 < 1000) Or (minhaCaixa01 > 1500) Then

MsgBox "o valor deve estar entre 1000 e 1500"

Me.minhaCaixa01.Value = " "

Cancel = True

Me.minhaCaixa01.SetFocus

Exit Sub

End If

End Sub

Paulo, obrigado pelo incentivo à pesquisa.

loyola.

Editado por loyola
Link para o comentário
Compartilhar em outros sites

  • 0

Ola, estou com um problema no AfterUpdate() de uma combobox

Tenho uma rowsource de 5 letras diferentes, e, quando eu abro o form e seleciono uma, tudo ok, porém quando eu mudo o método .SetFocus é ignorado.

 

Private Sub combo_job_AfterUpdate()

'----------- 0861 B ------------
    
    If combo_job.Value = "B" Then
        
        LIMPARCAMPOS
        
        txt_job.Enabled = False
        txt_job2.Enabled = False
        txt_po.Enabled = False
        
    
        txt_job = "0861"
        lb_tipojob = "B"
        lb_nomejob = "SERVIÇO NA FILIAL (B-PORT)"
        
        
        'txt_job2.SetFocus
        txt_job2 = Sheets("B").range("D1").Text
        txt_po = "N/A"
        txt_desc.SetFocus
    
    End If
   

'---------- OTHER JOBS ------------

        If combo_job.Value = "M" Then
        
            LIMPARCAMPOS
            
            txt_job2.Enabled = False
            
            
            lb_tipojob = "M"
            Cancel = True
            txt_job.SetFocus

 

É NESSA HORA QUE DEVERIA VOLTAR O FOCO PRA "txt_job", PORÉM ELE VAI SEMPRE PRA UMA TXTBOX ESPECÍFICA, QUE NO TABINDEX FICA 3 POSIÇÕES DEPOIS.

 

OBRIGADO DESDE já
            
            
            
                                    
        End If

 

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152k
    • Posts
      651,8k
×
×
  • Criar Novo...