2016-07-22 22 views
0

(1 * 8) + (2 * 8) + (3 * 8) + (4 * 8) + (5 * 8) als geschrieben werden (1 + 2 + 3 + 4 + 5) * 8.Gibt es eine Möglichkeit, den Code in VBA in PowerPoint zu vereinfachen?

Wie kann ich den folgenden Code auf ähnliche Weise vereinfachen?

Private Sub CommandButton1_Click() 
Label1.BackColor = &H8000000F 
Label2.BackColor = &H8000000F 
Label3.BackColor = &H8000000F 
Label4.BackColor = &H8000000F 
Label5.BackColor = &H8000000F 
End Sub 

Eigentlich habe ich von einer Lösung gehört, dass With verwendet, aber so weit ich sie nie in Powerpoint-Anwendung zu sehen.

+0

Dieser Code ist so einfach, wie es nur geht. Ich nehme an, Sie sagen, dass Sie nicht das gleiche Ding mehrmals schreiben möchten, aber manchmal (besonders mit userforms) müssen Sie nur. – RGA

+0

Mit Blöcken wäre fyi, wenn Sie mehrere verschiedene Dinge zu einem Objekt tun, nicht die gleiche Sache zu mehreren Objekten – RGA

+0

gibt es möglicherweise eine Möglichkeit, eine Schleife mit Zeichenfolge concatnation verwenden, aber ich bin mir nicht sicher, wie Sie VBA hätten interpretiere das String-Ergebnis als auszuführenden Befehl – RGA

Antwort

2

Sie können nicht With Schlüsselwort für eine solche Aufgabe

verwenden, aber Sie können dies tun:

Private Sub CommandButton1_Click() 
    Dim i As Long 
    For i = 1 To 5 
     Me.Controls("Label" & i).BackColor = &H8000000F 
    Next i 
End Sub 
+0

Es tut mir leid, aber ich habe versucht und mir wurde gesagt, "Methode oder Daten Mitglied nicht gefunden." und ".Controls" wurde markiert. Könnten Sie weitere Erklärungen dazu geben, wie dies funktionieren könnte oder warum könnte ich nicht mit diesem Code arbeiten? – chin98edwin

+0

Ich nehme eine Benutzerform mit einem 'Button' Steuerelement namens" CommandButton1 "und viele' Label' Steuerelemente, die nach "Label1", "Label2", .... benannt sind. Im UserForm Code Bereich befindet sich der "CommandButton1" Button 'Click' Event-Handler, also nach 'CommandButton1_Click()' benannt, wird ausgeführt, wenn der Benutzer auf diese Schaltfläche klickt. Dort verweist das 'Me'-Schlüsselwort auf das Userform-Objekt, dessen' .Controls'-Eigenschaft die Auflistung aller Benutzerformsteuerelemente zurückgibt, die jeweils über seinen Namen (wie "Label1") ausgewählt und über seine Eigenschaften (wie 'BackColor') gesetzt werden) – user3598756

+0

@ chin98edwin: hast du es geschafft? – user3598756

0

einen Bereich für die Etiketten erstellen und sie durch den Bereich rufen als zu Label gegenüber.

Private Sub CommandButton1_Click() rangename = & H8000000F End Sub

+0

Können Sie einen Beispielcode vorschlagen, der zeigt, wie Sie eine Reihe von Labels erstellen? –