Esqueceu sua senha? Você pode usar o mecanismo de lembrete neste link: Recuperar senha

Você receberá um link de reativação no email cadastrado.

Não recebeu o email? Lembre-se checar o Lixo Eletrônico.

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 » Sáb Mai 23, 2020 10:04 am

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: 2778
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 » Dom Mai 24, 2020 1:11 am

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


Tomás
https://www.tomasvasquez.com.br/blog
https://www.tomasvasquez.com.br/cursocsharp
https://twitter.com/tomamais
Se sua dúvida foi solucionada, acrescente [RESOLVIDO] ao título.

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 » Dom Mai 24, 2020 10:46 am

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: 2778
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 » Dom Mai 24, 2020 4:33 pm

Carlos,

Seu trecho de código menciona isso:

Código: Selecionar todos

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


Tomás
https://www.tomasvasquez.com.br/blog
https://www.tomasvasquez.com.br/cursocsharp
https://twitter.com/tomamais
Se sua dúvida foi solucionada, acrescente [RESOLVIDO] ao título.

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 » Dom Mai 24, 2020 8:56 pm

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: 2778
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 » Seg Mai 25, 2020 11:33 am

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


Tomás
https://www.tomasvasquez.com.br/blog
https://www.tomasvasquez.com.br/cursocsharp
https://twitter.com/tomamais
Se sua dúvida foi solucionada, acrescente [RESOLVIDO] ao título.

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