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 Sub in deinen Prüfungen lässt es offen – genau, was eine fehlgeschlagene Prüfung soll. Ein eigenes Unload gehö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.