Optionen in einem Makro anbieten (Microsoft Word)
Wenn Sie gerade erst mit der Entwicklung von Makros beginnen, suchen Sie möglicherweise nach einer einfachen Möglichkeit, einem Benutzer eine Reihe von Auswahlmöglichkeiten anzubieten und dann basierend auf der Antwort des Benutzers eine Aktion auszuführen. Dies ist eine relativ einfache Aufgabe, wenn Sie die InputBox-Funktion zusammen mit einer Select Case-Struktur verwenden.
Die erste Aufgabe besteht darin, Ihre InputBox so einzurichten, dass sie dem Benutzer die Informationen anzeigt. Angenommen, Sie haben fünf Optionen und möchten, dass der Benutzer eine dieser fünf Optionen auswählt. Mit dem folgenden Code können Sie fünf Optionen zusammenstellen, die jeweils in einer eigenen Zeile stehen:
sPrompt = "1. This is your first choice" & vbCrLf sPrompt = sPrompt & "2. This is your second choice" & vbCrLf sPrompt = sPrompt & "3. This is your third choice" & vbCrLf sPrompt = sPrompt & "4. This is your fourth choice" & vbCrLf sPrompt = sPrompt & "5. This is your fifth choice"
Sie können jetzt die sPrompt-Zeichenfolge verwenden, wenn Sie die InputBox-Funktion in Ihrem Makro aufrufen. Anschließend übersetzen Sie die Antworten des Benutzers in eine Zahl, die die Auswahl aus fünf Optionen darstellt. Der Code dafür lautet wie folgt:
sUserResp = InputBox(sPrompt, "The Big Question") iUR = Val(sUserResp)
In diesem Beispiel wird die Antwort der InputBox-Funktion der Variablen sUserResp zugewiesen, die eine Zeichenfolge sein sollte. Die iUR-Variable, bei der es sich um eine numerische Variable (Ganzzahl) handelt, wird dann basierend auf dem Wert der Zeichenfolge festgelegt. (Die Val-Funktion gibt den Wert in einer Zeichenfolge zurück.)
Sie müssen nur noch eine Aktion ausführen, die auf der Auswahl der Nummer 1 bis 5 basiert. Sie können dazu die Struktur „Fall auswählen“ verwenden.
Die vollständige Unterroutine könnte in VBA wie folgt aussehen:
Sub TestInput() Dim sPrompt As String Dim sUserResp As String Dim iUR As Integer sPrompt = "1. This is your first choice" & vbCrLf sPrompt = sPrompt & "2. This is your second choice" & vbCrLf sPrompt = sPrompt & "3. This is your third choice" & vbCrLf sPrompt = sPrompt & "4. This is your fourth choice" & vbCrLf sPrompt = sPrompt & "5. This is your fifth choice" iUR = 0 While iUR < 1 Or iUR > 5 sUserResp = InputBox(sPrompt, "The Big Question") iUR = Val(sUserResp) Wend Select Case iUR Case 1 'Do stuff for choice 1 here Case 2 'Do stuff for choice 2 here Case 3 'Do stuff for choice 3 here Case 4 'Do stuff for choice 4 here Case 5 'Do stuff for choice 5 here End Select End Sub
Beachten Sie, dass in diesem Beispiel eine While … Wend-Schleife um die InputBox-Funktion verwendet wird. Dies geschieht, um sicherzustellen, dass der Benutzer eine Zahl zwischen 1 und 5 eingibt. Wenn der eingegebene Wert außerhalb dieses Bereichs liegt, wird der Benutzer einfach erneut gefragt.
_Hinweis: _
Wenn Sie wissen möchten, wie die auf dieser Seite (oder auf einer anderen Seite der WordTips-Websites) beschriebenen Makros verwendet werden, habe ich eine spezielle Seite vorbereitet, die hilfreiche Informationen enthält.
WordTips ist Ihre Quelle für kostengünstige Microsoft Word-Schulungen.
(Microsoft Word ist die weltweit beliebteste Textverarbeitungssoftware.) Dieser Tipp (1366) gilt für Microsoft Word 97, 2000, 2002 und 2003. Sie finden eine Version dieses Tipps für die Multifunktionsleistenschnittstelle von Word (Word 2007) und später) hier: