vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#
TOP-Angebot: 17 bzw. 24 Entwickler-Vollversionen zum unschlagbaren Preis!  
 vb@rchiv Quick-Search: Suche startenErweiterte Suche starten   Impressum  | Datenschutz  | vb@rchiv CD Vol.6  | Shop Copyright ©2000-2024
 
zurück
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:     [ Jetzt bewerten ]Views:  26.960 
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

Dieser Tipp wurde bereits 26.960 mal aufgerufen.

Voriger Tipp   |   Zufälliger Tipp   |   Nächster Tipp

Über diesen Tipp im Forum diskutieren
Haben Sie Fragen oder Anregungen zu diesem Tipp, können Sie gerne mit anderen darüber in unserem Forum diskutieren.

Neue Diskussion eröffnen

nach obenzurück


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.
 
   

Druckansicht Druckansicht Copyright ©2000-2024 vb@rchiv Dieter Otter
Alle 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.

Diese Seiten wurden optimiert für eine Bildschirmauflösung von mind. 1280x1024 Pixel