Vídeo recomendado
https://youtu.be/diWPPPhW-9E

Formatar Bordas TextBox no Initialize

Fórum para dúvidas sobre os fundamentos da linguagem de programação Visual Basic no contexto do VBA
Avatar do usuário
mronlysky
Acabou de chegar
Acabou de chegar
Mensagens: 4
Registrado em: Sex Jun 02, 2017 2:52 pm

Formatar Bordas TextBox no Initialize

Mensagem por mronlysky »

Boa Tarde.

Existe algum meio de formatar todas as textbox e combobox de um form de uma so vez no evento Initialize? No momento estou configurando uma por uma, exemplo:

Me.cbxAcao.BorderColor = RGB(0, 128, 192)
Me.cbxCategoria.BorderColor = RGB(0, 128, 192)
Me.cbxItem.BorderColor = RGB(0, 128, 192)
Me.cbxEmpresa.BorderColor = RGB(0, 128, 192)
Me.txtValor.BorderColor = RGB(0, 128, 192)
Me.txtDataRef.BorderColor = RGB(0, 128, 192)
Me.txtData.BorderColor = RGB(0, 128, 192)

Att,
Marco


Disable adblock

This site is supported by ads and donations.
If you see this text you are blocking our ads.
Please consider a Donation to support the site.


Avatar do usuário
Mikel Silveira Fraga
Jedi
Jedi
Mensagens: 1173
Registrado em: Sex Mai 27, 2011 3:27 pm
Localização: Governador Valadares - MG
Contato:

Re: Formatar Bordas TextBox no Initialize

Mensagem por Mikel Silveira Fraga »

Marco, boa tarde e seja bem vindo ao fórum.

Tente utilizar no evento Initialize, o código abaixo:

Código: Selecionar todos

    Dim ctrl As control
    For Each ctrl In Me.Controls
      If VBA.Left(ctrl.Name, 3) = "cbx" _
      Or VBA.Left(ctrl.Name, 3) = "txt" Then _
      ctrl.BorderColor = RGB(0, 128, 192)
    Next ctrl
Dúvidas, a disposição.


Avatar do usuário
mronlysky
Acabou de chegar
Acabou de chegar
Mensagens: 4
Registrado em: Sex Jun 02, 2017 2:52 pm

Re: Formatar Bordas TextBox no Initialize

Mensagem por mronlysky »

Mikel Silveira Fraga escreveu: Sex Jun 02, 2017 4:21 pm Marco, boa tarde e seja bem vindo ao fórum.

Tente utilizar no evento Initialize, o código abaixo:

Código: Selecionar todos

    Dim ctrl As control
    For Each ctrl In Me.Controls
      If VBA.Left(ctrl.Name, 3) = "cbx" _
      Or VBA.Left(ctrl.Name, 3) = "txt" Then _
      ctrl.BorderColor = RGB(0, 128, 192)
    Next ctrl
Dúvidas, a disposição.
Boa Tarde!

Primeiramente, obrigado por responder.
Funcionou sim, mas poderia me explicar esse funcionamento?

Dim ctrl as control (Declarando assim posso utilizar tanto para textbox, combobox, buttons e etc?)
For Each ctr In Me.Controls (Aqui ok!)
If VBA.Left(ctrl.Name,3) = "cbx" (Aqui, o que esse ".left" faz? e apos o ".Name", porque colocou o ",3"?
o restante do codigo consegui compreender, se puder me explicar o que relatei, nao abusando da sua ajuda, fico agradecido!


Avatar do usuário
Mikel Silveira Fraga
Jedi
Jedi
Mensagens: 1173
Registrado em: Sex Mai 27, 2011 3:27 pm
Localização: Governador Valadares - MG
Contato:

Re: Formatar Bordas TextBox no Initialize

Mensagem por Mikel Silveira Fraga »

Marcos, boa noite.

Claro que te explico, com maior prazer.

A rotina é iniciada declarando-se uma variável do tipo Control. Esse tipo representa todos os Controles que são utilizados dentro de um Userform, indo desde TextBox até Multipage.

Quando uso o laço For Each, estou utilizando uma variação do For, para se navegar entre objetos de uma coleção do tipo Controles. Nesse caso, a variável ctrl vai passando por todos os controles do Userform (Me.Controls: onde Me = Userform local/atual; e Controls refere-se a coleção de controles do Userform).

Na sequencia fiz um teste, tendo como base os prefixos que você utilizou nos controles (cbx: ComboBox | txt: TextBox), usando a função Left (Esquerda) para comparar os controles que começassem com esses prefixo. Ao ser identificado, ele coloria a borda do controle e passava para o próximo, até finalizar todos.

Espero ter sido o mais claro possível na explicação. Dúvidas, a disposição.


Disable adblock

This site is supported by ads and donations.
If you see this text you are blocking our ads.
Please consider a Donation to support the site.


Avatar do usuário
mronlysky
Acabou de chegar
Acabou de chegar
Mensagens: 4
Registrado em: Sex Jun 02, 2017 2:52 pm

Re: Formatar Bordas TextBox no Initialize

Mensagem por mronlysky »

Mikel Silveira Fraga escreveu: Sex Jun 02, 2017 6:21 pm Marcos, boa noite.

Claro que te explico, com maior prazer.

A rotina é iniciada declarando-se uma variável do tipo Control. Esse tipo representa todos os Controles que são utilizados dentro de um Userform, indo desde TextBox até Multipage.

Quando uso o laço For Each, estou utilizando uma variação do For, para se navegar entre objetos de uma coleção do tipo Controles. Nesse caso, a variável ctrl vai passando por todos os controles do Userform (Me.Controls: onde Me = Userform local/atual; e Controls refere-se a coleção de controles do Userform).

Na sequencia fiz um teste, tendo como base os prefixos que você utilizou nos controles (cbx: ComboBox | txt: TextBox), usando a função Left (Esquerda) para comparar os controles que começassem com esses prefixo. Ao ser identificado, ele coloria a borda do controle e passava para o próximo, até finalizar todos.

Espero ter sido o mais claro possível na explicação. Dúvidas, a disposição.
Positivo. Captei vossa mensagem com sucesso.
Muito obrigado pela ajuda e pelo esclarecimento!


fallex
Colaborador
Colaborador
Mensagens: 13
Registrado em: Ter Jul 28, 2020 12:23 pm

Re: Formatar Bordas TextBox no Initialize

Mensagem por fallex »

Olá, boa tarde.

É possível fazer esse procedimento, porém, para mudar a cor da borda somente quando a textbox estiver ativa, tipo, ao entrar na textbox (enter) muda a cor e ao sair dela voltar ao padrão anterior?

Obrigado.


Avatar do usuário
Mikel Silveira Fraga
Jedi
Jedi
Mensagens: 1173
Registrado em: Sex Mai 27, 2011 3:27 pm
Localização: Governador Valadares - MG
Contato:

Re: Formatar Bordas TextBox no Initialize

Mensagem por Mikel Silveira Fraga »

Boa tarde Fallex, tudo bem?

Claro que é possível. Pode adaptar os comandos abaixo, para realizar esse procedimento.

Código: Selecionar todos

Private Sub TextBox1_Enter()
    Me.TextBox1.BorderColor = vbGreen
End Sub

Private Sub TextBox1_Exit(ByVal Cancel As MSForms.ReturnBoolean)
    Me.TextBox1.BorderColor = vbBlack
End Sub
Agora, se o que esta querendo é realizar esse comando já esta sendo utiliza e o que você deseja é adaptar a declaração de um único objeto, igual o caso acima, também é possível, mas já entramos na parte de desenvolvimento de Classes.

Caso queira encarar a bronca, dê uma olhada nesse vídeo e veja se atende sua necessidade.
Excel VBA Classe para Incluir Mascaras em TextBox


Disable adblock

This site is supported by ads and donations.
If you see this text you are blocking our ads.
Please consider a Donation to support the site.


Responder