Ir para conteúdo
Fórum Script Brasil
  • 0

Como trabalhar com o objeto Collection no VBA Excel?


Betocadilhe

Pergunta

Não tenho muita experiência com o VBA do Excel. Estou desenvolvendo um aplicativo bem simples usando o Excel 2003.

Eu tenho alguns OptionButton´s e duas caixas de textos num UserForm. Eu preciso analisar qual o OptionButton que está marcado com value = true e, dependendo do OptionButton que for selecionado pelo usuário, uma das caixas de texto será habilitada para edição, caso contrário, a caixa de texto permanecerá com sua propriedade locked marcada como true. Já separei os OptionButton's do meu formulário usando a propriedade GroupName.

Sei que posso fazer isso através de uma coleção (objeto Collection) usando o loop For Each. mas não sei como fazer isso.

O exemplo dado pelo Help da Microsoft usa a criação de uma variável do tipo Object e depois faz uso da coleção Controls para acessar o item da coleção. O incoveniente dessa solução é que a coleção Controls acessa TODOS os controles que estiverem no UserForm e eu só quero acessar os itens da coleção restrito aos OptionButtons.

Posso referenciar uma variável do tipo OptionButton e acessar uma coleção só de controles OptionButtons? Como posso fazer isso?

Alguém poderia me ajudar?

Beto

Link para o comentário
Compartilhar em outros sites

3 respostass a esta questão

Posts Recomendados

  • 0

1 Cria nome pros OPT's sequenciais (opt1, opt2, op3...) e coloque-os em um frame

2 Usa um replace pra tira o nome em comum, você terá um numero que pode ser validado

For Each x In UserForm1.frame1.Controls

if Replace(x.Name, "Opt", "", 1) > 2 then

[instruções]

else

[instruções]

end if

Next

Link para o comentário
Compartilhar em outros sites

  • 0

Obrigado Reyam pela atenção, mas gostaria de te perguntar duas coisas:

1º) No meu UserForm eu não usei Frames para aglutinar meus OptionButtons, eu usei a propriedade GroupName dos OptionButtons. Se eu não colocasse um Frame como você sugere, como ficaria o loop For Each usando a função Replace?

2º) Supondo que fosse pedido a você uma solução usando o objeto Collection, como você faria? Supondo que eu não colocasse frames, como você colocaria apenas os OptionButtons numa coleção? Como seria o loop For Each para identificar aquele Option que estivesse marcado com a propriedade Value = True?

Me perdoe se a pergunta é meio idiota, pois sou novo em VBA Excel.

Valeu!

Beto :ninja:

1 Cria nome pros OPT's sequenciais (opt1, opt2, op3...) e coloque-os em um frame

2 Usa um replace pra tira o nome em comum, você terá um numero que pode ser validado

For Each x In UserForm1.frame1.Controls

if Replace(x.Name, "Opt", "", 1) > 2 then

[instruções]

else

[instruções]

end if

Next

Link para o comentário
Compartilhar em outros sites

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.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,1k
    • Posts
      651,8k
×
×
  • Criar Novo...