vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#

https://www.vbarchiv.net
Rubrik: Verschiedenes / Sonstiges   |   VB-Versionen: VB5, VB605.12.01
InputBox: Welcher Button wurde gedrückt?

OK oder Abbrechen - das ist hier die Frage - und zwar immer dann, wenn der Rückgabewert der InputBox ein Leerstring ist.

Autor:   Dieter OtterBewertung:  Views:  26.977 
www.tools4vb.deSystem:  Win9x, WinNT, Win2k, WinXP, Win7, Win8, Win10, Win11 Beispielprojekt auf CD 

Sicher kennen auch Sie die Standard InputBox. Sie ist zwar nicht sonderlich flexibel, aber hin- und wieder lässt sie sich doch sinnvoll einsetzen.

Nun fordert man also den Anwender auf, irgendeine Eingabe zu machen - über die InputBox. Die InputBox-Funktion selbst liefert im Rückgabewert den eingegebenen Text. Solange dieser nicht "leer" ist, ist klar: OK wurde gewählt.

Was aber, wenn der Rückgabewert eine leere Zeichenfolge ist? Wurde die InputBox nun per OK oder per Abbrechen beendet? Keine Ahnung, denn: Klickt der Anwender auf den Abbrechen-Knopf, so gibt die InputBox-Funktion einen Leerstring zurück. Gibt der Anwender keinen Text ein und klickt auf den OK-Knopf, so wird ebenfalls ein Leerstring zurückgegeben.

Wie soll man nun herausfinden, welcher Button tatsächlich gewählt wurde?

Klar, in diesem Fall fragen wir den Anwender per MsgBox: "Haben Sie OK oder Abbrechen gewählt?" Nein, Scherz beiseite

Es gibt auch eine elegantere Lösung. Und zwar muss man wissen, dass unterschieden wird zwischen leerer Zeichenkette ("") und Null-String. Klickt der Anwender auf Abbrechen, wird eben ein Nullstring (vbNullString) zurückgegeben.

Leider ist das Ergebnis der InputBox in beiden Fällen eine leere Zeichenkette ("") - zumindest hat dies den Anschein. Wenn da nicht die StrPtr-Funktion wäre. Mit Hilfe dieser Funktion lässt sich nämlich feststellen, ob es sich um eine Zeichenkette oder einen Null-String handelt. Übergibt man der StrPtr-Funktion den Rückgabewert der InputBox, so liefert diese als Ergebnis 0, wenn es sich um einen Null-String handelt. Somit lässt sich also doch unterscheiden, ob der Anwender auf "Abbrechen" geklickt oder keinen Text in das Eingabefeld eingegeben hat.

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



Anzeige

Kauftipp Unser Dauerbrenner!Diesen und auch alle anderen Tipps & Tricks finden Sie auch auf unserer aktuellen vb@rchiv  Vol.6
(einschl. Beispielprojekt!)

Ein absolutes Muss - Geballtes Wissen aus mehr als 8 Jahren vb@rchiv!
- nahezu alle Tipps & Tricks und Workshops mit Beispielprojekten
- Symbol-Galerie mit mehr als 3.200 Icons im modernen Look
Weitere Infos - 4 Entwickler-Vollversionen (u.a. sevFTP für .NET), Online-Update-Funktion u.v.m.
 
 
Copyright ©2000-2024 vb@rchiv Dieter OtterAlle Rechte vorbehalten.


Microsoft, Windows und Visual Basic sind entweder eingetragene Marken oder Marken der Microsoft Corporation in den USA und/oder anderen Ländern. Weitere auf dieser Homepage aufgeführten Produkt- und Firmennamen können geschützte Marken ihrer jeweiligen Inhaber sein.