Página 1 de 1

Mudar cor de todos Frames

Enviado: 16 Nov 2020 às 22:05
por topscore
*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?

Re: Mudar cor de todos Frames

Enviado: 17 Nov 2020 às 19:53
por Strogonoff
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

Re: Mudar cor de todos Frames

Enviado: 19 Nov 2020 às 09:49
por topscore
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!

Re: Mudar cor de todos Frames

Enviado: 19 Nov 2020 às 20:12
por Strogonoff
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