Die InputBox in VBA

Statt Berichtsvariablen über DropDown-Listen auszuwählen und sie dadurch einer Prozedur zur Verfügung zu stellen, kann die Auswahl und das Bereitstellen in VBA auch über eine sogenannte InputBox erfolgen.

Darum geht es in diesem Beitrag.

Mit einer InputBox lassen sich in VBA einer deklarierten Variablen Werte zuweisen. Zunächst müssen deshalb die Variablen deklariert werden. In einem früheren Beitrag zur Variablendeklaration habe ich erklärt, wie das geht. Wichtig war dabei, den richtigen Datentyp zu wählen.

Diese InputBox wirst du gleich programmieren:

Inputbox1.png

Die Syntax lautet:

InputBox(prompt[, title] [, default][, xpos] [, ypos] [, helpfile, context])

Was sind die Argumente im Einzelnen?

„prompt“ ist der Text in der Box, die Aufforderung, z.B. „Bitte das Berichtsjahr eingeben!“.

Mit „title“ kann das, was oben links als „Microsoft Excel“ steht, der Name der InputBox sozusagen, verändert werden.

„default“ ist eine Vorgabe für deinen Eintrag, im Bild steht schon mal „2015“, d.h., das Jahr ist vollständig einzutragen. „15“ würde nicht funktionieren.

„xpos“ und „ypos“ bezeichnen die Position der Box auf dem Bildschirm, du begnügst dich mit dem Standard.

„helpfile, context“ sind Angaben zu Hilfsdateien, die du in diesem Beispiel auch nicht benötigst.

Ein Beispiel erklärt das Vorgehen am besten.

Deine Arbeitsmappe hat mehrere Arbeitsblätter, auf denen Umsatzdaten jeweils eines Jahres enthalten sind. Die Register erhalten als Namen die jeweilige Jahreszahl.

Auf jedem Arbeitsblatt befindet sich eine Summenzelle, für die Namen angelegt sind. Die Summenzelle des Jahres 2015 heißt „Umsatz2015“ usw.

Auf Blatt 1 willst du ein gewähltes Jahr und die dazugehörige Umsatzsumme abbilden.

Mit der InputBox wählst du das Jahr aus. Das Jahr soll vierstellig geschrieben werden, z.B. 2015. Das lässt sich mit dem Datentyp Single abbilden (8 Stellen). Die vergebenen Namen sind Texte, du nimmst dafür den Datentyp String.

Im VBA-Editor schreibst du diesen Code in ein Modul:

Sub Umsatz()
Dim sngJahr As Single  ‚Deklaration der Variablen
Dim strUmsatz As String
sngJahr = InputBox(„Bitte das Berichtsjahr eingeben!“, , 2015)  ‚Wertzuweisung mit der InputBox
Range(„B15“).Value = sngJahr ‚Ausgeben des Variablenwertes in eine Zelle
strUmsatz = Range(„Umsatz“ & sngJahr)  ‚Wertzuweisung Umsatz
Range(„D15“).Value = strUmsatz  ‚Ausgeben des Umsatzwertes in eine Zelle
End Sub

Du siehst, dass der Name der jeweiligen Umsatzzelle durch Verkettung gebildet wird.

Das Ergebnis sieht dann so aus:

inputbox2

In B15 steht das mit der InputBox eingegebene Jahr, in D15 der Wert der Umsatzsumme vom Blatt 2015. Hast du Arbeitsblätter für mehrere Jahre angelegt und sind jeweils Namen für die Umsatzsummen vergeben, kannst du erneut das Makro aufrufen und ein anderes Jahr eingeben. Das Ergebnis in D15 wird dann auch ein anderes sein.

Du könntest jetzt denken, warum so umständlich, ohne VBA bekomme ich diese beiden Werte doch viel einfacher auf mein Berichtsblatt. Du schreibst „2015“ in die Zelle B15 und D15 die Formel =INDIREKT(„Umsatz“&B15).
d69ace9ac02e42f1bf6bbbc26aad8a19
Da hast du natürlich recht. In der Regel wird ein Bericht aber viel umfangreicher sei, als dieses kleine Beispiel zeigt. Dann macht es schon Sinn.


Entdecke mehr von Clevercalcul

Subscribe to get the latest posts sent to your email.

4 Gedanken zu „Die InputBox in VBA“

  1. Wichtig ist noch die ‚Abbrechen‘-Taste abzufangen und das geht sauber so:
    Dim myInput As String

    myInput InputBox(„Wie alt sind Sie?“, „Alter“, „“)
    If StrPtr(myInput) = 0 Then
    MsgBox „Abbrechen wurde gewählt!“
    Else
    If myInput = „“ Then
    MsgBox „Keine Angabe bzgl. des Alters!“
    Else
    MsgBox „Aha… “ & myInput & “ Jahre also!“
    End if
    End If

    1. Hallo Jean Pierre, danke für den Hinweis. Die Sache ist mir bekannt, ich wollte den Beitrag aber nicht unbedingt auf alle Aspekte ausdehnen, es gibt noch weit mehr, worüber zu schreiben wäre. Grüße Gerhard

  2. Hallo Gerhard,
    die InputBox ist wichtig genug für einen Beitrag 🙂 Schön, dass du ihr einen widmest 🙂
    Mir gefällt auch der Hinweis, dass dieser Use Case natürlich auch anders gelöst werden könnte – gleichzeitig ist er ein gutes, nachvollziehbares Beispiel. Sonst wird’s ja zu kompliziert, um es nachvollziehen zu können 🙂

    1. Hallo Katharina, ich freue mich über deinen Kommentar, danke. Was ich gern noch kurz erläutert hätte, ist das Argument helpfile. Dazu habe ich allerdings kein KnowHow. Vielleicht mags du mal darüber schreiben?

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert

WordPress Cookie Plugin von Real Cookie Banner