Formulare
UserForms visuell bauen und Ereignis-Code dahinterlegen.
Der Formular-Designer baut echte UserForms. Nicht nachgebaute Dialoge, sondern das, was Excel selbst schreibt: die Form taucht im VBE auf, lässt sich dort öffnen und weiterbearbeiten.
Zeichnen
Links wählst du ein Steuerelement, es landet auf der Fläche. Ziehen verschiebt es, der Griff unten rechts ändert die Größe, beides rastet auf sechs Punkt ein. Pfeiltasten schieben um eine Rasterweite, mit Umschalt um vier. Entfernen löscht.
Verfügbar sind Bezeichnung, Textfeld, Kombinationsfeld, Listenfeld, Kontrollkästchen, Optionsfeld, Umschaltfläche und Schaltfläche.
Unter der Palette steht unter Auf dem Formular jedes Steuerelement als Liste; ein Klick wählt es aus. Was man auf der Fläche nicht sieht, ist dort markiert: verdeckt (liegt ganz unter einem anderen, auf der Fläche nicht anklickbar – hier auswählen und mit den Pfeiltasten wegschieben), leer (Bezeichnung ohne Text) und außerhalb (jenseits des Formularrands).
Ein ganzes Formular kopierst du mit dem Kopier-Symbol neben seinem Namen in der
Liste. Die Kopie heißt <Name>_2, bekommt neue Ids und behält die Namen der
Steuerelemente und den Code. Steht im Code der Formularname statt Me, zeigt
er weiter auf das Original.
Einheiten
Alles rechnet in Punkt, derselben Einheit, die das Eigenschaftenfenster in der VBA-Umgebung zeigt. Wer die Form später dort anfasst, liest dieselben Zahlen wie im Designer.
Ragt ein Steuerelement über den Rand, ist das eine Warnung und kein Fehler: Excel zeichnet die Form trotzdem, man sieht das Element nur nicht. Im Eigenschaften-Panel steht dann, wie groß das Formular sein müsste, und ein Knopf setzt es darauf.
Code hinter einem Steuerelement
Ein Steuerelement anklicken, ein Ereignis wählen, VBA schreiben. Über dem Editor steht die Prozedur, die daraus entsteht:
Private Sub CommandButton1_Click()
MsgBox TextBox1.Text
End Sub
Du schreibst nur den Rumpf, die Signatur setzt der Generator. Andere
Steuerelemente sprichst du direkt an, TextBox1.Text funktioniert ohne
Vorbereitung.
Welche Ereignisse angeboten werden, hängt vom Typ ab. Eine Bezeichnung hat kein
Change.
Die Eigenschaften stehen kompakt wie im Eigenschaftenfenster der VBE und lassen sich über die Überschrift einklappen. Der Code nimmt den Rest der Spalte; Groß öffnet ihn in einem breiten Fenster, Esc schließt es wieder.
Option Explicit setzt der Export im Formularmodul nur, wenn du die Zeile
selbst oben in den Code des Formulars schreibst.
Namen
Der Name eines Steuerelements wird zum VBA-Bezeichner, die Ereignisprozedur heißt danach. Deshalb muss er innerhalb des Formulars eindeutig sein, und der Formularname darf sich nicht mit einem Modulnamen überschneiden: beide landen im selben Namensraum, auch wenn sie im Editor nichts miteinander zu tun haben.
Das Formular öffnen
Ein Formular zeigt sich nicht von selbst. Leg eine Schaltfläche im Ribbon an und hinterlege dort:
Sub FormularOeffnen()
UserForm1.Show
End Sub
Ein Formular für mehrere Knöpfe
Brauchen mehrere Knöpfe dieselben Eingaben, aber jeder macht danach etwas anderes – etwa sechs Abfragen, bei denen nur ein, zwei Beschriftungen wechseln –, reicht ein Formular. Am Ribbon-Knopf unter Aktionen wählst du Formular öffnen und stellst ein:
- Formular und optional einen Fenstertitel für diesen Knopf.
- Beschriftungen für diesen Knopf: ein Feld je Bezeichnung. Leer heißt, der Text aus dem Formular bleibt.
- OK-Knopf: nach seinem Click-Code gilt das Formular als bestätigt und
schließt sich. Ein
Exit Subin deinen Prüfungen lässt es offen – genau, was eine fehlgeschlagene Prüfung soll. Ein eigenesUnloadgehört dort nicht hin, sonst sind die Eingaben weg, bevor die Prozedur sie bekommt; die Validierung warnt davor. - Danach aufrufen: die Prozedur, die die eigentliche Arbeit macht. Sie bekommt die Werte der Eingabefelder in der Tab-Reihenfolge. Der Editor zeigt den Aufruf und die passende Signatur:
Public Sub ExportFloc(ByVal v_Anlage As String, ByVal v_NOT As String, ByVal v_COC As String)
' die eigentliche Abfrage
End Sub
Abbrechen oder das X des Fensters beenden den Knopf ohne Fehler. Die Prozedur gehört in ein Modul und kennt das Formular nicht – so lässt sie sich auch ohne Formular aufrufen und testen.
Probelauf
Unter den Aktionen startet Probelauf einen Durchgang im Browser: links der
erzeugte Code, F8 geht Zeile für Zeile weiter wie in der VBE. Bei .Show
erscheint das Formular so, wie dieser Knopf es öffnet – geänderte
Beschriftungen sind gestrichelt umrandet –, und die Felder lassen sich füllen.
Nach OK steht im Verlauf, welche Prozedur mit welchen Werten aufgerufen
würde; nach Abbrechen springt der Lauf auf Cancelled:.
Ausgeführt wird dabei nichts. Der Probelauf zeigt den Ablauf, den addin.studio selbst erzeugt; dein eigener Code – Prüfungen im Click-Code, der Inhalt der Prozedur – läuft erst in Excel.
Dialoge
Unter Formulare › Dialoge entstehen gestaltete Meldungen und Rückfragen,
die statt MsgBox erscheinen: ein Symbol im farbigen Kreis, Titel, Text, ein
farbiger Hauptknopf und auf Wunsch ein zweiter. Dialoge gibt es in jedem
Plan, auch ohne eine Zeile Code; im Free-Plan ist einer enthalten.
Mit + wählst du eine von zehn Vorlagen – Löschen bestätigen, Datei überschreiben, Erfolg, Fehler und andere – oder fängst leer an. Alles daran lässt sich danach ändern: Art und Symbol, Farbe, Texte, Knöpfe. Die Vorschau zeigt den Dialog so, wie Excel ihn zeichnet.
Rahmenlos (Standard) blendet die Titelleiste aus und rundet die Ecken; das Fenster verschiebt man an der freien Fläche. Auf dem Mac erscheint stattdessen ein normales Fenster. Enter wählt den Hauptknopf, Esc bricht ab.
Platzhalter
Ein Wort in geschweiften Klammern im Text wird zum Platzhalter, etwa
{kunde}. Im Eigenschaften-Panel bekommt es einen Standardwert, der gilt, wenn
der Aufruf keinen mitgibt.
Aufrufen
Ohne Code: an einem Ribbon-Knopf die Aktion Eigenen Dialog zeigen wählen. Wählt der Anwender den zweiten Knopf, hören die folgenden Schritte auf.
Im eigenen VBA ist jeder Dialog eine Funktion, die beim Hauptknopf True
liefert:
If modDialoge.EintragLoeschen("Rechnung 2024-117") Then
' löschen
End If
Dialoge mit nur einem Knopf liefern immer True.
Was noch fehlt
Rahmen und Mehrseiten-Steuerelemente, also die Container, gibt es noch nicht. Ebenso Registerleiste, Bildlaufleiste, Drehfeld und Bild. RefEdit lässt sich nicht erzeugen, es ist ein Excel- und kein MSForms-Steuerelement.