VBA: InputBox und Application.InputBox

AppInputBox1 1

InputBox? Vielleicht erinnerst du dich. Da gab es doch schon mal einen Beitrag zu diesem Thema.

Das ist nur zum Teil richtig. In besagtem Beitrag ging es um die InputBox-Funktion.

In diesem Beitrag soll es um die InputBox-Methode gehen.

Wo ist der Unterschied?

„Die InputBox-Methode weicht von der InputBox_Funktion dahingehend ab, dass sie die selektive Überprüfung der Benutzereingabe ermöglicht, und sie kann mit Excel-Objekten, -Fehlerwerten und -Formeln verwendet werden. Beachte, dass Application.InputBox die InputBox-Methode aufruft. InputBox ohne Objektqualifizierer dagegen ruft die InputBox-Funktion auf.“

Zunächst zeigt der Beitrag kurz, wie die InputBox-Funktion zu programmieren war.

1. Die InputBox-Funktion

In VBA kannst du mit einer InputBox einer deklarierten Variablen Werte zuweisen. Zuerst musst du deshalb die Variablen deklarieren.

Die Variable soll hier der Name des Benutzers sein. Er wird mit der InputBox aufgefordert, diesen einzugeben.

Die Syntax der InputBox lautet:

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

Die Argumente sind:

“prompt” ist der Text in der Box, die Aufforderung, z.B. “Trage bitte deinen Namen ein!”. Die Variable soll strNamen heißen.

Mit “title” kann das, was oben links als “Microsoft Excel” steht, der Name der InputBox sozusagen, verändert werden. Dort soll „Deine Eingabe“ stehen. Die Variable ist strTitel.

“default” ist eine Vorgabe für den Eintrag. Im Beispiel wird nichts vorgegeben.

Schließlich gibt es noch eine Variable für das Ergebnis der Abfrage, strAntwort.

Am Ende des Makros soll strAntwort in Zelle A2 eingetragen werden.

Der Code dafür kann dann so aussehen:

Sub Eingabe1()

Dim strNamen As String

Dim strTitel As String

Dim strAntwort As String

strNamen=“Trage bitte deinen Namen ein!“

strTitel=“Deine Eingabe“

strAntwort=InputBox(strNamen,strTitel)

Range(„A2“)=strAntwort

End Sub

Führe das Makro aus.

Es folgt die InputBox wie oben beschrieben.

AppInputBox1 2

Trage nun deinen Namen ein, ich habe hier mal meinen eigenen gewählt, „Gerhard“.

Wie angewiesen, wird der Name in Zelle A2 des Arbeitsblattes eingetragen.

Soviel zur InputBox-Funktion.

2. Die Application.InputBox-Methode

Die Aufgabe soll hier die gleiche wie bei der Funktion sein. Mittels einer InputBox soll ein Name abgefragt und in eine Zelle des Arbeitsblattes eingetragen werden.

Bei der Verwendung einer Application.InputBox gibt es u.a. die Möglichkeit, Formeln und Zellbezüge einzugeben. Es muss dazu eine Type angegeben werden.

Die Syntax lautet:

 Application.InputBox (Prompt, Title, Default, Left, Top, HelpFile, HelpContextID, Type)

Die Argumente gelten analog den Ausführungen zur InputBox-Funktion.

Hinzu kommt das Argument Type. Diese gibt es zur Auswahl:

AppInputBox3 1

In einem ersten Beispiel soll der Type 8, ein Zellbezug, gewählt werden. Der Name, der in Zelle A2 eingetragen werden soll, befindet sich in einem Bereich F14:F19 und soll dort ausgewählt werden.

Nach Durchlauf des Makros soll der ausgewählte Name in Zelle A2 abgelegt werden.

Verwende dazu z.B. dieses Makro:

Sub Eingabe2()

Dim rngBereich As Range

Set rngBereich = Application.InputBox(prompt:=”Wähle eine Zelle aus!”, Type:=8)

Range(“A2”)=rngBereich

End Sub

Deklariere zunächst die Variable rngBereich und referenziere sie mit der Anweisung „Set“.

Du erhältst die Anweisung “Wähle eine Zelle aus!”

Klicke nun auf eine Zelle aus dem Bereich F14:F19 und bestätige mit OK.

Der ausgewählte Name wird nun in Zelle A2 abgelegt.

Hast du versehentlich als Type die 1 ausgewählt und willst die Zelle F17 als Bezug wählen, erhältst du diese Fehlermeldung.

In einem weiteren Beispiel wird Type = 1 gewählt.

Du wirst durch die InputBox aufgefordert, dich für eine Zahl zu entscheiden und sie einzutragen.

Eine MsgBox zeigt deine Auswahl. Nach dem OK wird die Zahl in Zelle A2 eingetragen.

Dies ist das Makro dafür:

Sub Eingabe3()

Dim intNummer As Integer

intNummer = Application.InputBox(prompt:=”Wähle eine Zahl!”, Type:=1)

MsgBox(intNummer)

Range(“A2”)=intNummer

End Sub

Hast du versehentlich im Makro als Type z.B. 8 eingetragen, erhältst du diese Fehlermeldung.

Schreibe einen Kommentar

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

WordPress Cookie Plugin von Real Cookie Banner