criquio 18/10/2011, 16:07
Olá! Uma forma de se conseguir isso, pode ser usando o evento "Ao apertar tecla" do seu campo memorando. A propriedade "Comportamento da tecla Enter", na aba "Outra", convem estar definida como "Nova linha no campo" e é bom ter um outro campo para receber o foco antes de aplicar a ação, pois esse evento requer que o campo seja atualizado. Ante de mais nada, caso ainda não tenha, coloque a seguinte linha logo após a linha
Option Compare Database, no módulo vba do formulário:
Option ExplicitAgora, após a linha
Option Explicit, coloque mais uma linha:
Dim L As StringEssa variável, para a qual demos o nome de L, irá assumir o valor NL quando pressionarmos na tecla Enter e irá assumir LA quando pressionarmos outra tecla qualquer. Para quê isso? Porque se pressionarmos a tecla Enter, o espaço da tecla Tab terá que ficar na linha de baixo, porque queremos inserir uma nova linha. Então, na nossa instrução, quando L for NL, colocaremos vBcRlF para adicionar a linha que queremos no nosso campo. Agora, no evento "Ao apertar tecla" do seu campo memo, coloque algo assim:
If KeyCode = vbKeyTab Then ' Se a tecla pressionar for a Tab...
Me.Campo2.SetFocus ' Manda o foco para o campo 2
Me.CampoMemo.SetFocus ' Retorna o foco para o memo
If L = "LA" Then ' Se L for LA...
Me.CampoMemo = Me.CampoMemo & " " ' adiciona 7 espaços após o cursor (" ")
ElseIf L = "NL" Then ' se L for NL
Me.CampoMemo = Me.CampoMemo & vbCrLf & " " ' passa para a linha de baixo (VBCRLF) e adiciona os espaços.
End If
Me.CampoMemo.SelStart = Len(Me.CampoMemo.Text) ' envia o cursos para o fim do texto.
KeyCode = 0 ' Inibe a ação padrão de TAB
Else
End If
If KeyCode = vbKeyReturn Then ' Se tecla pressionar for Enter
L = "NL" ' L = NL
Else ' caso contrário...
L = "LA" ' L = LA
End If