Este fórum está sendo desativado

Depois de 9 anos, este fórum será desativado. Mas calma.... estamos migrando para uma comunidade no DISCORD. Junte-se a nós.

ENTRAR PARA DISCORD

Tópicos relacionados a códigos VBA, gravação de macros, etc.
  • Avatar do usuário
Por topscore
Posts
#60545
*FInicial = Meu Formulário principal.
Pessoal, mudei a cor de fundo e frente de todos os Textbox e combobox do formulário usando o seguinte código:
Código: Selecionar todos
Sub ColorsTBCB1()

Dim objeto As Control

For Each objeto In FInicial.Controls
If TypeName(objeto) = "TextBox" Or TypeName(objeto) = "ComboBox" Then
objeto.BackColor = &H8000000D
objeto.ForeColor = &H8000000E

End If

Next objeto

End Sub
Como faço a mesma coisa para mudar, de uma só vez, as cores de todos os frames do formulário? Também vou precisar manejar Checkbox, Imagens (quadrados que coloco no fundo) e option buttons.

Tentei algo assim para mudar a cor dos frames, e ficou ridículo, não tem nada a ver:
Código: Selecionar todos
Sub ColorsFR1()

Dim objeto As Frame

For Each objeto In FInicial.Controls

If TypeName(objeto) = "Frame" Then
objeto.BackColor = H80000001

End If

Next objeto
Alguém consegue ajudar?
Avatar do usuário
Por Strogonoff
Posts Avatar
#60582
Boa noite!!!
Sempre que vou manipular algo em VBA, faço primeiro um simulado manualmente para ver se é possível.
Os frames, infelizmente tem esse problema, se você programar o background dele, você precisará também fazer com tudo o que está dentro dele a mudança da backgroumd.
o que eu faria no seu caso é um sobreposição dos frames e deixo um visível e o outro não. Conforme dá o resultado que você queira, trocaria a visibilidade do frame ao invés de programar tudo o que está dentro dele.
Segue em anexo planilha com exemplo, com código que permite qualquer ordem de alteração.
espero ter ajudado.
Abraço
Você não está autorizado a ver ou baixar esse anexo.
Por topscore
Posts
#60632
Obrigado Strogonoff.

Infelizmente, tenho controles específicos nos frames, vinculados com códigos e planilhas. Se eu duplicar os frames dessa forma, teria que duplicar os controles, o que é inviável.
Acho que o único jeito é mudar a cor em todos os frames manualmente:
frame1.BackColor = H80000001
frame2.BackColor = H80000001
frame3.BackColor = H80000001
etc.

Se você souber um código para fazer isso, por favor poste aqui. Caso contrário, vou fazer desse jeito mesmo.

Obrigado!
Avatar do usuário
Por Strogonoff
Posts Avatar
#60657
Boa noite!!
Como havia comentado, para mudar as BackColors terá que ser uma a uma, porém para o código não ficar muito grande, crie uma rotina para fazer essas mudanças e a chame na rotina que precisar fazer a mudança.
ficaria algo assim
If ( Condição que você precisa) then
call ColorirFundo
end if

Sub ColorirFundo
frame1.BackColor = H80000001
frame2.BackColor = H80000001
frame3.BackColor = H80000001
End sub

deixaria o código mais compacto para você.
Abraço
topscore agradeceu por isso
long long title how many chars? lets see 123 ok more? yes 60

We have created lots of YouTube videos just so you can achieve [...]

Another post test yes yes yes or no, maybe ni? :-/

The best flat phpBB theme around. Period. Fine craftmanship and [...]

Do you need a super MOD? Well here it is. chew on this

All you need is right here. Content tag, SEO, listing, Pizza and spaghetti [...]

Lasagna on me this time ok? I got plenty of cash

this should be fantastic. but what about links,images, bbcodes etc etc? [...]

Estamos migrando para uma comunidade no Discord