2016-07-24 10 views
1

Ich schreibe etwas Code um und dachte darüber nach, aber es scheint nicht zu funktionieren, dass meine Syntax richtig ist. Ich möchte eine for-Schleife verwenden, um ein Array von Befehlsschaltflächen zu füllen und ihre Sichtbarkeit zu steuern. Ich brauche nur Hilfe mit meiner Syntax, um zu definieren, welche CommandButton Nummer ich in der Schleife arbeite. Zum Beispiel CommandButton1, CommandButton2 usw.VBA Variable als CommandButton #

Public Sub LoadLots(sName As String, streamLots() As String) 
    Label1.Caption = sName 
    For o = 1 To 9 
     If streamLots(o) <> "" Then 
      CommandButton& o &.Caption = streamLots(o) 
      CommandButton& o & .Visable = True 
     Else 
      CommandButton& o & .Visable = False 
     End If 
    Next 
End Sub 
+2

'ActiveSheet.Shapes ("Command" & o) .Caption' ... auch' Visable' sollte 'Visible' –

+0

ich hinzugefügt haben, sollten diese Tasten auf einem Formular sind. – Flibertyjibbet

+0

das gleiche Prinzip, aber Sie haben die Antwort auch unten. –

Antwort

2

Verwenden Sie die Userform.Controls Sammlung mit den Befehlsschaltflächen namentlich referenzieren.

Public Sub LoadLots(sName As String, streamLots() As String) 
    Dim btn As MSForms.CommandButton 
    Label1.Caption = sName 
    For o = 1 To 9 
     Set btn = Me.Controls("CommandButton" & o) 
     If streamLots(o) <> "" Then 
      btn.Caption = streamLots(o) 
      btn.Visible = True 
     Else 
      btn.Visible = False 
     End If 
    Next 
End Sub 
+0

Perfekt, danke. – Flibertyjibbet

+0

Ich bin froh, dass ich helfen konnte. Danke für den Scheck. –