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).
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 |
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 mit 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 |