Não estou conseguindo devolver o foco para o campo depois mostrar que é informado que o lançamento já foi feito.
Na primeira execução o cursor fica visível e piscando aguardando ser digitado a informação, ao teclar ENTER a função vai validar se os dados estão corretos, quando não está a função indica que está com inconsistência. Neste caso mudo a cor da textbox para vermelho, limpo a textbox e devolvo o foco para o campo.
Porém, o foco não ocorre, pois não consigo digitar nada, é como se o cursor ficasse perdido no "LIMBO", se teclo ENTRE o cursor vai para o próximo campo, ou se quero ativar o cursor no campo em QUESTÃO, preciso clicar com o mouse dentro do campo para mostrar o cursor.
PS: Já tentei só usando o comando CANCEL=TRUE, e só o comando SETFOCUS e os dois juntos invertendo a ordem de execução.
PASSO A PASSO para simular o problema:
Abra a planilha,
Ative as MACROS,
clique no botão LANÇAR ENTRADAS
No campo DATA informe 01/02/2022 o sistema já insere as "/"
No campo TP ENTRADA só tecle ENTER
No campo DESC informe 55000 vai abrir um outro FORM informando que esse lançamento já foi feito.
tecle no botão FECHAR o campo DESC vai ficar vermelho mas se consegue digitar nada. Clique no campo e digite 56000 para poder seguir.
Abaixo a rotina onde ocorre:
Private Sub ENTRADA_DESC_Exit(ByVal Cancel As MSForms.ReturnBoolean)
Me.ENTRADA_DESC.BackColor = &HFFFFFF
ENTRADA_DESC_VALIDA (ENTRADA_DESC.Value) ' função que valida se a informação
' xErro é uma variavel global
If xErro = "S" Then
xErro = "N"
Me.Controls("ENTRADA_DESC").BackColor = &HFF&
ENTRADA_DESC.Value = ""
Cancel = True
Me.Controls("ENTRADA_DESC").SetFocus
Exit Sub
End If
End Sub
Postado : 26/02/2022 12:01 pm