Hallo,
Wenn B1 leer ist wird nicht nach einem Leerzeichen gesucht, denn das wäre ja ein Zeichen " ". Stattdessen wird eine leere Zelle als Nullstring "" interpretiert. Und dieser Nullstring ist quasi ein nicht existenter Bereich im String, den du dir theoretisch dazu denken kannst. Wenn du z.B. "" & "B" & "" & E & "" verknüpfst, erhältst du "BE". Somit ist die Suche nach einem Nullstring mit der Suche nach einem beliebigen Zeichen gleichzusetzen, denn in der Theorie existiert dieser vor und hinter jedem Zeichen. Deshalb wird die erstbeste Position im String wiedergegeben, und das ist, wenn du bei 1 beginnst die 1, wenn du bei 2 beginnst die 2 usw. Gleichzeitig funktioniert die Suche nach einem Wildcard "*" leider nicht, denn das wäre ja wieder selbst ein Zeichen.
So viel zur theoretischen Logik. Gemäß der Online-Hilfe ist definiert. "Rückgabe wenn string2 die Länge NULL aufweist: Start" Und genau das macht die Funktion.
Fazit. Prüfe mit einer If-Bedingung ob die Zelle Leer ist und reagiere darauf. Wenn sie nicht leer ist, dann kannst du Instr. im Else-Teil verwenden.
If Range("B1") = "" Then Range("A1").ClearContents Else Range("A1") = InStr(1, "BE,DK,DE,FR,IT,LX,NL,AT,PL,CZ,", Range("B1"))
Gruß Mr. K.