ABOUT Visual Basic Programmieren Programmierung Download Downloads Tips & Tricks Tipps & Tricks Know-How Praxis VB VBA Visual Basic for Applications VBS VBScript Scripting Windows ActiveX COM OLE API ComputerPC Microsoft Office Microsoft Office 97 Office 2000 Access Word Winword Excel Outlook Addins ASP Active Server Pages COMAddIns ActiveX-Controls OCX UserControl UserDocument Komponenten DLL EXE
Diese Seite wurde zuletzt aktualisiert am 18.08.2000

Diese Seite wurde zuletzt aktualisiert am 18.08.2000
Aktuell im ABOUT Visual Basic-MagazinGrundlagenwissen und TechnologienKnow How, Tipps und Tricks rund um Visual BasicActiveX-Komponenten, Controls, Klassen und mehr...AddIns für die Visual Basic-IDE und die VBA-IDEVBA-Programmierung in MS-Office und anderen AnwendungenScripting-Praxis für den Windows Scripting Host und das Scripting-ControlTools, Komponenten und Dienstleistungen des MarktesRessourcen für Programmierer (Bücher, Job-Börse)Dies&Das...

Themen und Stichwörter im ABOUT Visual Basic-Magazin
Code, Beispiele, Komponenten, Tools im Überblick, Shareware, Freeware
Ihre Service-Seite, Termine, Job-Börse
Melden Sie sich an, um in den vollen Genuss des ABOUT Visual Basic-Magazins zu kommen!
Informationen zum ABOUT Visual Basic-Magazin, Kontakt und Impressum

Zurück...

Abbruch einer InputBox

Zurück...


Anzeige

Wolfgang EnzingerWolfgang Enzinger / (-hg) mailto:hg_cancelinputbox@aboutvb.de

Manchmal sollte man doch recht genau lesen, was in der Visual Basic-Hilfe steht. So können Sie etwa bei der InputBox-Funktion zu deren Rückgabewert lesen:

Klickt der Benutzer auf Abbrechen, gibt die Funktion eine
Null-Zeichenfolge ("") zurück.

Oberflächlich gesehen soll das "" bedeuten, dass bei einem leeren zurückgegebenen String der Anwender eben die "Abbrechen"-Schaltfläche betätigt hat.

Dim Eingabe As String

Eingabe = InputBox$("Gib' etwas ein - oder auch nicht:")
If Eingabe = "" Then
  Debug.Print "Abbrechen"
Else
  Debug.Print "OK"
End If

Solange nicht ein Vorgabe-Text an die InputBox übergeben wird (im Parameter Prompt), ist diese Rückgabe-Prüfung auch brauchbar - der Anwender hat ja nichts eingegeben, egal, ob er die "Abbrechen"- oder "OK"-Schaltfläche betätigt hat. Sobald jedoch ein Vorgabe-Text hinzukommt, sagt die Prüfung des Rückgabe-Strings nichts mehr zuverlässig über die betätigte Schaltfläche aus.

Dim Eingabe As String

Eingabe = InputBox$("Gib' etwas ein - oder auch nicht:", , _
 "Vorgabe")
If Eingabe = "" Then
  Debug.Print "Abbrechen"
Else
  Debug.Print "OK"
End If

Einerseits trifft zwar

Eingabe = ""

zu, wenn die "Abbrechen"-Schaltfläche betätigt wurde. Doch andererseits trifft das auch zu, wenn der Anwender die Vorgabe gelöscht und die "OK"-Schaltfläche betätigt hat. Wie also lässt sich zuverlässig, und jedweder Aufgabenstellung exakt gerecht werdend, die betätigte Schaltfläche unterscheiden?

Auf den ersten Blick könnte geprüft werden, ob sich der zurückgegebene String von der Vorgabe unterscheidet.

If Eingabe = "Vorgabe" Then

Sind beide identisch, hat sich der Anwender offensichtlich mit der Vorgabe einverstanden erklärt. Genau genommen stimmt das jedoch nicht: Nur mit der ausdrücklichen Betätigung der "OK"-Schaltfläche hätte er sein Einverständnis erklärt. Denn es ist durchaus auch ein Programm-Szenario denkbar, in dem der Anwender mit dem Betätigen der "Abbrechen"-Schaltfläche aussagt, dass er zum Zustand vor der Anzeige der InputBox zurückkehren möchte, etwa um sich noch einmal zu informieren, oder um vorangegangene Eingaben zu korrigieren, und dergleichen mehr. Das Betätigen der "OK"-Schaltfläche hingegen würde zum nächsten Programmschritt weiterleiten, auch bei unverändert zurückgegebenem Vorgabe-String.

Sie erinnern sich: Eingangs sprach ich von "genauem Lesen". Schauen wir also noch einmal hin:

Klickt der Benutzer auf Abbrechen, gibt die Funktion eine
Null-Zeichenfolge ("") zurück.

Mit der Prüfung von "" als Rückgabewert haben wir Schiffbruch erlitten. Versuchen wir doch einmal herauszufinden, was hinter "Null-Zeichenfolge" stecken könnte. Dazu müssen wir wieder einmal in die Trickkiste greifen und eine undokumentierte Visual-Basic-Funktion zutage fördern - die Funktion StrPtr. Diese Funktion liefert uns den Wert des Zeigers auf einen String (das ist, vereinfacht gesagt, die Speicheradresse eines Strings). Könnte es etwa sein, dass...?

Wir probieren folgendes aus:

Dim Eingabe As String

Eingabe = InputBox$("Gib' etwas ein - oder auch nicht:" , , _
 "Vorgabe")
If StrPtr(Eingabe) = 0 Then
  Debug.Print "Abbrechen"
Else
  Debug.Print "OK"
End If

Und siehe da - die InputBox gibt nach dem Betätigen der "Abbrechen"-Schaltfläche immer und eindeutig einen Zeiger zurück, dessen Wert 0 ist, eben eine "Null-Zeichenfolge". Die Rückgabe ist nun eindeutig auswertbar geworden. Dabei macht es auch nichts aus, welchen Wert die Variable Eingabe vor dem Aufruf der InputBox gehabt haben mag.


Artikel
Mail an den Autor dieses Artikels

KnowHow
Zur KnowHow-Übersicht

KnowHow-Themen
Themen - Allgemeines
Themen - Entwicklungsumgebung (VB-IDE)
Themen - Forms
Themen - Steuerelemente (Controls)
Themen - Grafik
Themen - Dateien
Themen - UserControls
Themen - Einsteiger-Tipps
Themen - Wussten Sie...?

Übersicht nach Titeln in alphabetischer Reihenfolge
Übersicht nach Erscheinungsdatum

Schnellsuche



Zum Seitenanfang

Copyright © 1999 - 2017 Harald M. Genauck, ip-pro gmbh  /  Impressum

Zum Seitenanfang

Zurück...

Zurück...

Download Internet Explorer