VBA MSFORMS vs Steuerelemente - was ist der Unterschied
Beim hinzufügen von Steuerelementen zu einem Benutzerformular, was ist der Unterschied zwischen folgenden. Ich bin verwirrt, Wann ist es angebracht, für jeden einzelnen, der diese.
Dim aButton1 as MSFORMS.CommandButton
Dim aButton2 as Control.CommandButton
Dim aButton3 as CommandButton
InformationsquelleAutor TYale | 2013-03-17
Du musst angemeldet sein, um einen Kommentar abzugeben.
Hinzufügen UserForm ersten. Dann in VBA-IDE durch drücken von F2, die Objekt-browser erscheint. In der linken oberen Ecke ist das Kombinationsfeld, wählen Sie MSForms. In der Klassen-Liste können Sie sehen, die Klassen, das gehört zu MSForms Bibliothek-Objekt.
Können Sie sehen, CommandButton und Kontrolle in dieser Liste:
Deklarieren Sie eine variable des Typs CommandButton in deinem code:
Den Variablen button1 ist vom Typ CommandButton MSForms sicher. Die button2 könnte Ihre eigene Klasse definiert, die in Ihrem lokalen VBA-Projekt ... aber wenn Sie Ihre lokale VBA-Projekt enthält keine Klasse mit diesem Namen wird es als MSForms als gut. Allerdings wenn Sie auf ein anderes Objekt Bibliothek sagen 'MSFoo' enthalten wird Klasse CommandButton-wie gut müssen Sie erklären Ihnen vollständig qualifizierten wie diese:
Deklarieren Sie eine variable vom Typ Control im code:
Variable vom Typ Control wie eine Art Basisklasse für Steuerelemente. E. g. zu enumarate Controls-Auflistung:
Oder als parameter in der Funktion, die erwartet nicht nur eine Art der Steuerung:
So vollständig qualifizierten Namen wie MSForms.CommandButton ist im Allgemeinen die richtigen denke ich. Verwendung Zu Steuern.CommandButton ist falsch und wird nicht kompiliert, bis Sie einige Referenz-Objekt-Bibliothek mit dem Namen 'Steuern' mit der Klasse CommandButton.
EDIT:
Hier ein Beispiel von lokal erstellte Klasse mit dem gleichen Namen wie MSForm.Befehlsschaltfläche:
Und wie TypeName und TypeOf Arbeit in diesem Fall:
InformationsquelleAutor dee
Nummern 1 und 3 erstellen, die die gleiche Art von Kontrolle. Die erste Aussage ist gerade voll Qualifizierter äquivalent zu Dim ws as WorkSheet oder Dim ws as Excel.Arbeitsblatt.
Ich bin nicht vertraut mit dem Typ 2 - "Kontrolle.CommandButton" - und es nicht kompilierbar ist für mich innerhalb einer userform in Excel 2010.
InformationsquelleAutor Doug Glancy