AW: VBA if and or
12.06.2021 15:13:05
Firmus
Hallo Werner,
dein Code, so wie du in zeigst, muss etwas hinterfragt werden.
in deinem Code finde ich das verwirrend und fehleranfällig:
Falls der Blattname, der in newname steht, noch nicht existiert, dann
ist sheetIx = "leer" und nicht "0"
dabei gilt: "0" ist nicht größer "leer"
VBA intepretiert hier 'leer" als "0" - die genaue Regel wann VBA "leer" als "0" intepretiert (Kulanz des Interpreters), kenne ich nicht,
deshalb würde ich mit präziseren Abfragen arbeiten.
oder wenn sich die Schreibweise geändert hat (z. B. kleiner Buchstabe gegen großen Buchstaben getauscht
XLS unterscheidet bei sheetnames nicht zwischen Groß- und Kleinschreibung,
deshalb ist Blatt "xxl" und "XXL" nicht gleichzeitig möglich.
=> Woran erkennst du die Änderung der Schreibweise?
Verlässliche, nachvollziehbare Ergebnisse produziert dieser Code, angelehnt an deinen Code.
Option Explicit
Sub xx2()
On Error Resume Next
newname = "XXL"
SheetIx = Sheets(newname).Index
On Error GoTo 0
If Err.Number 0 Then
'Blatt mit Name aus newname ist nicht vorhanden
'die Buchstaben in newname können dabei in beliebiger Kombination in Groß/Kleinschreibung sein.
Else
'Blatt mit Name aus newname ist vorhanden, sheetIX zeigt dort hin.
'auch hier gilt: Die Buchstaben in newname können in beliebiger Kombination in Groß/Kleinschreibung sein.
If Sheets(SheetIx).Name newname Then
ActiveSheet.Name = newname
'welchen Sinn macht diese Anweisung, es kann nicht verschieden sein, denn
'SheetIx = Sheets(newname).Index hat genau diesen Wert gerade ausgelesen.
'UND Groß/Kleinschreibung bei den Blattnamen, als Unterscheidungskriterium von zwei Blättern in einer Datei, ist nicht möglich.
End If
End If
End Sub
Gruß,
Firmus