Por vezes existe a necessidade de personalizar o comportamente e/ou funcionalidade de determinados controlos por as mais diversas razões. Estas alterações estão muitas vezes já contempladas nas propriedades do próprio objecto e o utilizador apenas necessita de a alterar.
Mas algumas vezes essas funcionalidades não existem e existe a necessidade de utilizado o código, através do VBA, para o fazer.
Neste exemplo vamos limitar o número de linhas numa TextBox ou caixa de texto. Esta limitação pode apenas ser controlada pelo número de vezes que o utilizador carrega na tecla ENTER criando uma nova linha.
Assim é necessário seleccionar a TextBox e nas suas propriedades definir Enter Key Behavior como New Line in Field. Desta forma estamos a definir que sempre que o utilizador carrega na tecla ENTER é criada uma nova linha.
Depois, no evento On Key Press seleccionamos o editor de código. É utilizado o evento KeyPress e não o KeyDown ou KeyUp porque este é o único que permite cancelar a tecla que foi carregada, ou seja, permite ignorar o commando dado pelo utilizado.
No editor de código é necessário apenas inserir o seguinte código no procedimento:
' Procedimento que é executado quando é pressionada qualquer tecla quando a TextBox tem a selecção ou focus
Private Sub Text0_KeyPress(KeyAscii As Integer)
' Verifica se a tecla carregada foi a ENTER
If KeyAscii = vbKeyReturn Then
' Cria um array de tipo string
Dim totalLines() As String
' Coloca no array criado a lista de linhas existentes na TextBox
totalLines = Split(Text0.Text, vbCrLf)
' Caso o total de linhas no array seja superior a 2
' (uma vez que o array inicia em 0)
If UBound(totalLines) > 2 Then
' Ignora o comando dado pelo utilizado
KeyAscii = 0
End If
End If
End Sub
PS: Como sempre, qualquer dúvida, comentário ou correcção ao artigo é sempre bem vinda!
Subscrever:
Enviar feedback (Atom)
3 comentários:
Po, gostei muito do que vc publicou a respeito da limitação do número de linhas de um textbox e, por isso, gosria de saber se vc poderia me ajudar pois num programa que estou fazendo vou precisar saber a quantidade de linhas de um textbox (escrito por um usuário) e apartir dessa quantidade poder "quebrar" essas linhas, de forma que eu possa coletar as informações desse textbox linha por linha, entendeu?
Po, se vc puder me ajudar agradeço muito..
meu e-mail é:
beto.nascimento@yahoo.com.br
Desde já agradeço.
Meu vba é de 2007 e esse código não funciona :( Você saberia me informar as modificações que devem ser feitas?
Obrigada!
Mas em Access?
Enviar um comentário