Dialogfenster

In VBA gibt es verschiedene Arten von Dialogfenstern, die programmiert oder aufgerufen werden können. Beispiele hierfür sind:
– Meldungsfenster (engl. MsgBox).
– Eingabedialogfenster (engl. InputBox).
– Integrierte Excel Dialogfenster, z. B. Dialogfenster zum Öffnen und Speichern von Excel Dateien.

Sub Meldungsfenster1()
MsgBox "Hello World
End Sub

Damit wird folgendes Meldungsfenster angezeigt:

Durch Klicken auf den OK Button verschwindet das Meldungsfenster.

Über Parameter kann beim Aufruf angegeben werden, ob das Meldungsfenster eine oder mehrere Schaltflächen anzeigen soll. Mögliche Schaltflächen sind beispielsweise Ok, Abbrechen, Ja oder Nein. Man kann auch angeben, ob ein Symbol angezeigt werden soll.
Beispiel

Sub Meldungsfenster2()
'Beispiel "Information"
MsgBox Prompt:="Der Name des aktuellen Tabellenblatts lautet: " & _
     ActiveSheet.Name, Buttons:=vbOKCancel + vbInformation, Title:="Information"
End Sub

Damit wird das folgendes Meldungsfenster angezeigt. Mit vbInformation wird das „i“ in einem blauen Kreis angezeigt. Durch Klicken auf den „OK“ oder „Abbrechen“ Button verschwindet das Meldungsfenster.

Mit folgendem Code kann man den Rückgabewert des Meldungsfensters erfassen und in einem weiteren Meldungsfenster ausgeben.

Sub Meldungsfenster2b()
'Beispiel "Information"
Dim Ergebnis As Integer
Ergebnis = MsgBox(Prompt:="Der Name des aktuellen Tabellenblatts lautet: " & _
     ActiveSheet.Name, Buttons:=vbOKCancel + vbInformation, Title:="Information")
MsgBox Ergebnis
End Sub

Konstanten zur Ausgabe von Schaltflächen in Meldungsfenstern:

Konstanten zur Ausgabe von Symbolen in Meldungsfeldern:

Konstanten für die Rückgabewerte aus Meldungsfenstern:

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Ut elit tellus, luctus nec ullamcorper mattis, pulvinar dapibus leo.

Eingabedialogfenster (InputBox):

Die Funktion InputBox dient zur Ausgabe eines Eingabedialogfensters. Sie beinhaltet Argumente zur Angabe der Nachricht und des Titels. Außerdem gibt es ein optionales Argument default zur Angabe eines Standardwertes. Der Rückgabewert der Funktion InputBox ist vom Datentyp String.

Beispiel:

 

Sub Eingabedialogfenster1()
Dim sText As String
sText = InputBox(prompt:="Eingabe:")
If sText <> "" Then
   MsgBox sText
End If
End Sub

Damit wird folgendes Eingabedialogfenster ausgegeben:

Wird auf die Abbrechen-Schaltfläche geklickt, wird ein Leerstring zurückgegeben. Darauf sollte das Programm entsprechend reagieren.

Beispiel für die Rückgabe von Zahlenwerten:

Sub Eingabedialogfenster2()
Dim Laenge As Double, Breite As Double, Flaeche As Double
Laenge = CDbl(InputBox(prompt:="Bitte Laenge in [m] eingeben ", Title:="Bitte eine Zahl eingeben"))
Breite = CDbl(InputBox(prompt:="Bitte Breite in [m] eingeben", Title:="Bitte eine Zahl eingeben"))
Flaeche = Laenge * Breite
MsgBox prompt:="Die Flaeche betraegt: " & CStr(Flaeche) & " m^2", Buttons:=vbOKCancel + vbInformation, Title:="Ergebnis"
End Sub

In Excel integrierte Dialogfenster verwenden

Unter VBA können in Excel integrierte Dialogfenster verwendet werden. Diese Dialogfenster können nicht verändert werden, sondern lediglich mit der Show Methode angezeigt werden. In vielen Fällen können Parameter an das Dialogfeld übergeben werden. In Excel 365 gibt es 260 Dialogfenster, die verwendet werden können. Wie im Screenshot gezeigt sind die vba-Konstanten für die Dialogfenster unter VBA im Objektkatalog unter XlBuiltInDialog aufgeführt.

Achtung:
Leider ist die Dokumentation oft nicht sehr hilfreich. Der Code kann daher auch einmal unerwartete Änderungen vornehmen und die vom Code vorgenommenen Änderungen können nicht mehr rückgängig gemacht werden. Es empfiehlt sich daher eine Backup Kopie der Excel Datei anzulegen, bevor man den Code laufen lässt.

Um ein in Excel integriertes Dialogfenster anzuzeigen, verwendet man eine der folgenden Anweisungen
Application.Dialogs(Konstante).Show

oder
Antwort = Application.Dialogs(Konstante).Show
wobei:

  • Konstante ist eine Konstante der XlBuiltinDialog Aufzählung (engl. Enumeration), die angibt, welches Dialogfeld angezeigt werden soll. Jede Konstante besteht aus dem Präfix „xlDialog“ gefolgt vom Namen des Dialogfensters. Beispielsweise ist die Konstante des Dialogfelds „Öffnen“ xlDialogOpen und die Konstante des Dialogfelds „Speichern unter“ xlDialogSaveAs.
  • Antwort ist in der Regel eine Variable des Typs Boolean für den Rückgabewert.
    True, falls der Button „Ok“ im Dialogfenster geklickt wurde und ansonsten (z. B. wenn der Button Abbrechen geklickt wurde) False.

Dialogfenster zum Öffnen einer Excel-Datei

Beispiel:

Sub DialogDateiOeffnen()
Dim Antwort As Boolean
Antwort = Application.Dialogs(xlDialogOpen).Show
MsgBox Antwort
End Sub

Wird eine Excel Datei ausgewählt und auf den Button Ok geklickt, wird die Datei geöffnet. Der Name der ausgewählten Excel Datei kann nicht an den VBA Code zurückgegeben werden. Wenn auf die Schaltfäche „Abbrechen“ geklickt wird, wird der Rückgabewert „False“ in einem Meldungsfenster ausgegeben.

Dialogfenster zu Speichern einer Excel Datei

Beispiel

Sub DialogDateiSpeichern()
Dim Antwort As Boolean
Antwort = Application.Dialogs(xlDialogSaveAs).Show("Testfile.xlsm")
MsgBox Antwort
End Sub

Dialogfenster zum Setzen der Gitterlinien

Beispiel:
Mit dem folgenden VBA Code kann das Excel Dialogfenster zum Setzen der Gitterlinien in einem Zellbereich angezeigt werden. Vor dem Starten des Codes muss der Zellbereich für den die Gittelnetzlinien gesetzt werden sollen im gewünschten Excel Tabellenblatt ausgewählt werden.

Sub Dialogfenster_Gitterlinien()
Dim ws As Worksheet
Set ws = Worksheets("Tabelle1")
ws.Activate
Application.Dialogs(xlDialogBorder).Show
Set ws = Nothing
End Sub

Dialogfenster zum Formatieren der Schriftart in einem Zellbereich

Beispiel:
Mit dem folgenden VBA Code kann das Excel Dialogfenster zum Formatieren der Schriftart in einem Zellbereich angezeigt werden. Vor dem Starten des Codes muss der Zellbereich für den die Schriftart geändert werden soll im gewünschten Excel Tabellenblatt ausgewählt werden.

Sub Dialogfenster_Zellen_formatieren()
Dim ws As Worksheet
Set ws = Worksheets("Tabelle1")
ws.Activate
Application.Dialogs(xlDialogActiveCellFont).Show
Debug.Print ActiveCell.Font.Color
Set ws = Nothing
End Sub

Eine Alternative ist der folgende Code. In diesem Beispiel wird der Bereich, für den die Schriftart geändert werden soll, im Code ausgewählt. Außerdem werden die Schriftart und die Schriftgröße als Parameter übergeben.

Sub Dialogfenster_Zellen_formatieren_2()
Dim ws As Worksheet, varFeld As Variant
Dim strFont As String
Set ws = Worksheets("Tabelle1")
ws.Activate
ws.Range(Cells(1, 1), Cells(2, 2)).Select
varFeld = Application.Dialogs(xlDialogFontProperties).Show("Calibri", , 14)
Debug.Print varFeld
Set ws = Nothing
End Sub

Dialogfenster zum Ausrichten des Textes in einem Zellbereich

Beispiel:
Mit dem folgenden VBA Code kann das Excel Dialogfenster zum Ausrichten des Textes in einem Zellbereich angezeigt werden.

 

Sub Dialog_Zellausrichtung()
Dim ws As Worksheet
Set ws = Worksheets("Tabelle1")
ws.Activate
ws.Range(Cells(1, 1), Cells(3, 3)).Select
Application.Dialogs(xlDialogAlignment).Show
Set ws = Nothing
End Sub

Dieser Beitrag hat einen Kommentar

Schreibe einen Kommentar