LOOP DE COMANDO PARA VARIOS BOTOES

MLALEX 15/07/2012 22:03:58
#406149
Como fazer um loop para acionar vários botões ou outro componente qualquer sem indexadores? Por exemplo. Com indexadores é fácil:

Do Until idx = 10
Command1(idx).Enabled = True
idx = idx + 1
Loop


Agora como fazer isso sem indexadores???
IRENKO 16/07/2012 09:15:01
#406159
Dim ctl As Control
For Each ctl In Me.Controls
If TypeName(ctl) = [Ô]CommandButton[Ô] Then
If ctl.Tag = [Ô]X[Ô] Then
ctl..Enabled = True
End If
End If
Next

Identifique seus controles atraves do TAG dos mesmos.
MLALEX 16/07/2012 10:34:42
#406162
Olá Irenko!! Primeiro quero agradecer sua atenção. Mas acho que não consegui ser claro ou não entendi sua resposta, mas o que eu quero é fazer um loop sem precisar digitar o nome do botão, como no seu código. Eu coloco simplesmente CommandButton(idx).qualquercoisa e o laço vai se encarregando de acionar os botões.

Quero evitar na verdade de fazer o seguinte:
command1.visible = true
command2.visible = true
command3.visible = true
command4.visible = true

Fazendo algo do tipo:

Do Until idx = 4
Command(idx).Visible = True
idx = idx + 1
Loop

Isso tem jeito??
IRENKO 16/07/2012 12:26:02
#406179
Private Sub Form_Load()
For i = 0 To 3
If i = 0 Then
Botão(i).Enabled = False
ElseIf i = 2 Then
Botão(i).Enabled = True
End If
Next
End Sub

ou ainda:

Private Sub Form_Load()
For i = 0 To 3
Select Case i
Case 0, 1
Botão(i).Enabled = False
Case 2, 3
Botão(i).Enabled = True
End Select
Next
End Sub
MARCELO.TREZE 16/07/2012 13:30:57
#406186
Resposta escolhida
Bom colega o for..each é o caminho basta usa-lo desta forma


Private Sub Command1_Click()
Dim ctl As Control
For Each ctl In Me.Controls
If TypeOf ctl Is CommandButton Then
ctl.Visible= False
End If
Next
End Sub


o botão acima irá desativar todos os commandbuttons

porém se vc deseja que apenas alguns commandbuttons fiquem invisivieis basta colocar um asterisco na propriedade dos que irão ficar invisiveis, e usar este código

Private Sub Command1_Click()
Dim ctl As Control
For Each ctl In Me.Controls
If TypeOf ctl Is CommandButton Then
If ctl.tag = [Ô]*[Ô] Then
ctl.Visible = False
End If
End If
Next
End Sub


pronto, quase como o irenko tinha dito


MLALEX 16/07/2012 17:54:22
#406203
Olá IRENKO. Já tinha tentado o código que você sugeriu mas dá erro 13. O que realmente resolveu o problema foi o código do Marcelo. AGRADEÇO MUITO A ATENÇÃO DOS DOIS. MUITO OBRIGADO
Tópico encerrado , respostas não são mais permitidas