nicht über einen Kamm scheren
04.03.2009 22:45:13
Tino
Hallo,
ich würde GetOpenFilename und die InputBox nicht über einen Kamm scheren.
Bei GetOpenFilename, kann man nur einen Pfad zurückgeben oder auf abbrechen drücken.
Durch die Typumwandlung, wird aus
CStr(False) = "Falsch" (deutsches System)
CStr(False) = "False" (englischen System)
Bei GetOpenFilename wird bei Abbruch
"Falsch" (deutsches System)
"False" (englisches System)
zurückgegeben.
Diese beiden Strings kann ich miteinander vergleichen ohne
aus der Variablen sFile einen Varianten Typ machen.
Eine zwiespältige Rückgabe wie bei Application.InputBox ist bei GetOpenFilename
sowieso nicht möglich.
Entweder bekomme ich einen Pfad zurück oder eben durch Abbruch False.
Brauch also nicht zwingend einen Varianten Typ.
Sub test()
Dim sFile As String
sFile = Application.GetOpenFilename("Text Files (*.txt), *.txt")
If sFile = CStr(False) Then
MsgBox "Benutzer hat abgebrochen", vbInformation
Else
MsgBox "Benutzer hat die Datei" & Chr(13) & sFile & Chr(13) & "gewählt", vbInformation
End If
End Sub
Bei der Inputbox würde ich individuell vorgehen,
je nach dem was ich als Rückgabe erwarte.
Bei Text (String) verwende ich
InputBox und fange den Abbruch über StrPtr ab.
Bei Zahlen oder so, verwende ich Application.InputBox und
begrenze die Eingabe mit der Angabe des entsprechenden Typs.
Gruß Tino