Ich hatte es fast befürchtet...
NoNet
Hallo Walter,
als ob ich geahnt hätte : Beim Erstellen des Codes war mir diese Begrenzung schon klar :
Da Tabellenblätter maximal 31 Zeichen lang sein dürfen und der VBA-Code den Zusatz " (2)" der kopierten Blätter "abschneidet", lag es nahe, dass Blätter mit mehr als 27 Zeichen im Namen Probleme bereiten würden. Ich hatte nur gehofft, dass Deine Blattnamen deutlich kürzer sind....
Das Problem mit mehr als27 Zeichen lässt sich nicht zu 100% lösen, da man ja nicht erahnen kann, wie das Blatt zuvor hieß ;-). Wenn allerdings zumindest die ersten 27 Stellen eindeutig sind, dann sollte folgender angepasster Code "passen" :
Dim intBlattAnzahl
Private Sub Workbook_WindowActivate(ByVal Wn As Window)
Dim shDummy, shTemp, strShName As String
If ThisWorkbook.Sheets.Count > intBlattAnzahl Then
On Error Resume Next
Err.Clear
strShName = Left(ActiveSheet.Name, Len(ActiveSheet.Name) - 4)
If Len(strShName) < 27 Then
Set shDummy = Sheets(strShName)
Else
Err = 1
For Each shTemp In Sheets
If UCase(shTemp.Name) Like UCase(strShName) & "*" And _
shTemp.Name <> ActiveSheet.Name Then
strShName = shTemp.Name
Set shDummy = shTemp
Err = 0
Exit For
End If
Next
End If
If Err = 0 Then
Application.DisplayAlerts = False
shDummy.Delete
ActiveSheet.Name = strShName
Application.DisplayAlerts = True
End If
On Error GoTo 0
End If
End Sub
Private Sub Workbook_WindowDeactivate(ByVal Wn As Window)
intBlattAnzahl = ThisWorkbook.Sheets.Count
End Sub
Gruß, NoNet