19. VBA - Programme mit UserForm (Dialogblätter)


Statt in Tabellen können Sie Steuerelemente auch in Dialogblätter ( UserForm, Formular) einfügen. Diese sind eingendefinierte Dialogfelder, die sich genauso verhalten wie die Dialogfelder von Excel oder den anderen Windows-Anwendungen.

19.1. Einfügen von UserFormen

Userformen fügen sie direkt im VBA ein, indem Sie mit das Kontextmenü im Projektfenster aufrufen (siehe Abbildung).

Aufruf der UserForm

Mit der automatisch eingeblendeten Werkzeugsammlung können Sie unterschiedlichste Steuerelemente einfügen indem Sie auf das betreffende Symbol klicken und danach auf das Formular.

Bezeichnung

Objekte auswählen - Macht das Anklicken eines
Toolbox-Symbols rückgängig

Textfeld = Textfeld für Anzeige oder Eingabe

Kombinationsfeld = Text- und Listenfeld

Optionsfeld = mit zwei Zuständen

Rahmen = fasst Elemente zu einer Gruppe

Multiseiten = für Formulare mit Registern

Bildlaufleiste = zum Fensterrollen

Anzeige = Rahmen für Bilddatei



Bezeichnung

Bezeichnungsfeld = Erzeugt ein Bezeichnungsfeld
für statischen Text

Listenfeld = Liste von Elementen zur Auswahl

Kontrollkästchen = mit zwei Zuständen

Umschaltfeld = Schalter mit zwei Zuständen

Befehlsschaltfläche = mit Beschriftung

Register = für Formulare mit gleichen Registern

Drehfeld = Durchblättern von Bearbeitungsfeldern

RefEdit = Textfeld mit Verkleinerungstaste

1.1 Einfaches Beispiel

In einer selbstgestalteten UserForm soll nach Eingabe einer Zahl und Betätigung einer Schaltfläche, die Quadratzahl gebildet werden und evtl. an eine EXCEL-Zelle übertragen werden.




19.1.1. Objekte gestalten

Die UserForm wird mi
t den Elementen Bezeichnungsfeld, Textfeld, Befehlsschaltfläche gestaltet. Über das Eigenschaftenfenster werden die Eigenschaften der Elemente geändert.



19.1.2. Programm erstellen und starten

Mit Doppelklick auf die Elemente öffnen sich die Codierfenster automatisch. Die Die Eigenschaften der Elemente kann man per Mausklick aufrufen.


Da Textfelder natürlich nur Text liefern, wäre eine Umwandlung in Werte sinnvoll z.B.

Zahl = VAL ( txtEingabe.text )


Der Programmstart erfolgt sinnvollerweise über eine mit Makro belegte Befehlsschaltfläche mit folgendem Makro.

Sub Start()
   Quadratzahl.Show
End Sub

19.2. Beispiel Gleichungen

Über eine UserForm soll die Wertetabelle und das Diagramm in Anbhängigkeit der eingegebenen Parameter angepasst werden.




Quelltext aus der UserForm:

Private Sub UserForm_Activate()
Dim getfocus As String
  Tfm.Text = Sheets("Gleichung").Range("A15")
  Tfc.Text = Sheets("Gleichung").Range("B15")
End Sub
Private Sub CmdParabel_Click()
Dim m As Double, c As Double, y As Double, x As Single, Zeile As Integer
  m = CDbl(Tfm.Text)
  c = CDbl(Tfc.Text)
  Sheets("gleichung").Range("A15") = m
  Sheets("gleichung").Range("b15") = c
  For x = -5 To 5
    y = m * x * x + c
    Sheets("gleichung").Cells(x + 8, 2) = y
  Next x
End Sub
Private Sub CmdGerade_Click()
Dim m As Double, c As Double, y As Double, x As Single, Zeile As Integer
  m = CDbl(Tfm.Text)
  c = CDbl(Tfc.Text)
  Sheets("gleichung").Range("A15") = m
  Sheets("gleichung").Range("b15") = c
  For x = -5 To 5
    y = m * x + c
    Sheets("gleichung").Cells(x + 8, 2) = y
  Next x
End Sub
Private Sub CmdNeu_Click()
  Tfm.Text = ""
  Tfc.Text = ""
  Tfm = getfocus
End Sub
Private Sub CmdEnde_Click()
  ActiveWorkbook.Close
  End
End Sub
 
Quelltext Tabellenmodul:
Sub auto_open()
  Ufgleichung.Show
End Sub

5 3 4