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

Variar dinamicamente o UserForm dentro de uma rotina de repetição

Fórum para dúvidas sobre os fundamentos da linguagem de programação Visual Basic no contexto do VBA
ricosv@hotmail.com
Acabou de chegar
Acabou de chegar
Mensagens: 4
Registrado em: Sex Mai 22, 2020 2:39 pm

Variar dinamicamente o UserForm dentro de uma rotina de repetição

Mensagem por ricosv@hotmail.com »

Tenho uma rotina de repetição (For) comum para várias UserForms, onde "X" (UserFormX) varia de acordo com "i".
Como faço para variar o indice do Userform?

For i = 1 To 10
If Sheets("Plan1").Range("J" & i) <> "" Then
UserFormX.Commandbutton.ForeColor = RGB(255, 0, 0)
' Userform("i") não funciona
End If
Next

att.

Carlos H.


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
webmaster
Administrador
Mensagens: 3114
Registrado em: Sex Jul 24, 2009 2:44 pm
Contato:

Re: Variar dinamicamente o UserForm dentro de uma rotina de repetição

Mensagem por webmaster »

Código: Selecionar todos

Dim c As Object
For Each c In ThisWorkbook.VBProject.VBComponents
     If c.Type = 3 Then
         MsgBox c.Name
     End If
Next
Não tenho certeza se você pode alterar qualquer propriedade, mas vale a tentativa.

Fonte: https://stackoverflow.com/a/23548104


ricosv@hotmail.com
Acabou de chegar
Acabou de chegar
Mensagens: 4
Registrado em: Sex Mai 22, 2020 2:39 pm

Re: Variar dinamicamente o UserForm dentro de uma rotina de repetição

Mensagem por ricosv@hotmail.com »

Não e isso que estou precisando. Vou tentar exemplificar melhor

Exemplo: tenho uma UserForm com 4 CommandButton. Acionando o CommandButon1 ele muda a cor da fonte dos demais.

Código: Selecionar todos

Private Sub CommandButton1_Click()
    UserForm1.CommandButton2.ForeColor = RGB(255, 0, 0)
    UserForm1.CommandButton3.ForeColor = RGB(255, 0, 0)
    UserForm1.CommandButton4.ForeColor = RGB(255, 0, 0)
End Sub
Mais quero que essa troca de cor ocorra dentro de um "For"

Código: Selecionar todos

For i = 2 To 4
    UserForm1.CommandButton(i).ForeColor = RGB(255, 0, 0)
Next

Não consigo variar o CommandButton (poderia ser qualquer outro elemento) dentro de um laço de repetição.

att.

Carlos


Avatar do usuário
webmaster
Administrador
Mensagens: 3114
Registrado em: Sex Jul 24, 2009 2:44 pm
Contato:

Re: Variar dinamicamente o UserForm dentro de uma rotina de repetição

Mensagem por webmaster »

Carlos,

Seu trecho de código menciona isso:

Código: Selecionar todos

' Userform("i") não funciona
E foi isso que respondi


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.


ricosv@hotmail.com
Acabou de chegar
Acabou de chegar
Mensagens: 4
Registrado em: Sex Mai 22, 2020 2:39 pm

Re: Variar dinamicamente o UserForm dentro de uma rotina de repetição

Mensagem por ricosv@hotmail.com »

Desculpa, mais não consegui entender sua resposta. O exemplo que mostrei é básico, só trocar a cor das fontes dos CommandButton dentro de um "For", não conseguir aplicar a sua resposta.


Avatar do usuário
webmaster
Administrador
Mensagens: 3114
Registrado em: Sex Jul 24, 2009 2:44 pm
Contato:

Re: Variar dinamicamente o UserForm dentro de uma rotina de repetição

Mensagem por webmaster »

Carlos,

Isso mereceria um outro tópico, mas já que estamos aqui, tente isso:

Código: Selecionar todos

Sub TrocaCor()
    Dim botao As MSForms.Control
    For Each botao In Me.Controls
        If TypeName(botao) = "CommandButton" Then botao.ForeColor = RGB(255, 0, 0)
    Next botao
End Sub


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