tenho a seguinte dúvida em VBA no excel 2007. Já pesquisei muito pela internet e até agora não encontrei resposta alguma:
Onde é definida a ordem pela qual o loop for each percorre os objetos de um formulário?
Tenho um userform com 'n' controles presentes nele. Então quando utilizo o loop for each para percorrê-los a ordem que esses são acessados pelo loop não parece seguir nenhuma das propriedades dos controles. (TabOrder, etc)
Ou seja, eu preciso que eles sejam acessados pelo loop em uma determinada ordem, mas não encontrei nas propriedades ou comandos do VBA onde eu posso definir essa ordem ou alterá-la.
Um código de exemplo segue abaixo:
Private Sub Exemplo_Click()
Dim Objeto As Variant
For Each Objeto In UserForm.Controls
foo(Objeto) 'ele acessa os objetos em uma ordem que eu não sei como definir ou alterar =/
Next
End Sub
Eu já percebi que ele acessa os objetos na ordem em que são "colados" no userform. Mas se eu mudar um objeto de lugar ou adicionar um novo ele muda a ordem novamente. O Pior, se já tenho um formulário pronto e desejo controlar essa ordem de acesso, teria de retirar cada controle e readioná-los na ordem desejada. O que além de imprático não acredito que seja a última solução.
Bem, é isso. Desculpem o texto longo, mas é a minha primeira postagem no forum e queria ser o mais claro possível.
Pergunta
labanca
Boa tarde pessoas,
tenho a seguinte dúvida em VBA no excel 2007. Já pesquisei muito pela internet e até agora não encontrei resposta alguma:
Onde é definida a ordem pela qual o loop for each percorre os objetos de um formulário?
Tenho um userform com 'n' controles presentes nele. Então quando utilizo o loop for each para percorrê-los a ordem que esses são acessados pelo loop não parece seguir nenhuma das propriedades dos controles. (TabOrder, etc)
Ou seja, eu preciso que eles sejam acessados pelo loop em uma determinada ordem, mas não encontrei nas propriedades ou comandos do VBA onde eu posso definir essa ordem ou alterá-la.
Um código de exemplo segue abaixo:
Private Sub Exemplo_Click()
Dim Objeto As Variant
For Each Objeto In UserForm.Controls
foo(Objeto) 'ele acessa os objetos em uma ordem que eu não sei como definir ou alterar =/
Next
End Sub
Eu já percebi que ele acessa os objetos na ordem em que são "colados" no userform. Mas se eu mudar um objeto de lugar ou adicionar um novo ele muda a ordem novamente. O Pior, se já tenho um formulário pronto e desejo controlar essa ordem de acesso, teria de retirar cada controle e readioná-los na ordem desejada. O que além de imprático não acredito que seja a última solução.
Bem, é isso. Desculpem o texto longo, mas é a minha primeira postagem no forum e queria ser o mais claro possível.
Grato.
Link para o comentário
Compartilhar em outros sites
2 respostass a esta questão
Posts Recomendados
Participe da discussão
Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.