Ich habe folgenden Code und möchte, dass er mit der Meldung "Keine Datei ausgewählt" beendet wird sobald man eine der zwei Dateien nicht auswählt. Wie mache ich das denn am besten? :/
Es beginnt immer damit, erst einmal die Doku zu studieren: https://learn.microsoft.com/de-de/office/vba/api/excel.application.getopenfilename
(der wichtigste Skill den man haben muss, wenn man programmiert, ist Dokument lesen und verstehen zu können)
Da kann man sehen, dass der Rückgabetyp Variant ist - also der Datentyp in VB(A), der alles sein kann.
Weiter steht dort drin, dass die Rückgabe abhängig von verschiedenen Faktoren ist.
Letztendlich ist es jedoch einer von drei Datentypen:
- Variant/Boolean
- Variant/String
- Variant/Array
Genau genommen sollte also die Variable, die den Rückgabewert entgegen nimmt, vom Datentyp Variant sein und nicht von z.B. String; wie bei dir.
Dann hast du nämlich die Möglichkeit genau auf den Datentyp zu testen (VarType-Funktion). Jedenfalls wäre das der Bilderbuch-Weg.
In der Praxis wirst du aber häufig der pragmatischen Herangehenweise begegnen (nur wenn kein Multiselect aktiviert):
Dim tlupdatewbPath As String
Dim beupdatewbPath As String
'Get the path of the workbooks
tlupdatewbPath = Application.GetOpenFilename("Excel Files (.xls),.xls", , "Select TL Workbook")
beupdatewbPath = Application.GetOpenFilename("Excel Files (.xls),.xls", , "Select BEIF Workbook")
If tlupdatewbPath = False Or beupdatewbPath = False Then
Call MsgBox("Nope!", vbExclamation)
Exit Sub
End if
Das dies auch funktioniert, hat damit zu tun das Boolean hier in String konvertiert wird - sowohl auf der linken Seite als auch rechten Seite von dem Vergleichsoperator (=). Damit passt es wieder... aber wie gesagt, das ist nur pragmatisch.
Grüße
|