Live-Forum - Die aktuellen Beiträge
Datum
Titel
28.03.2024 21:12:36
28.03.2024 18:31:49
Anzeige
Archiv - Navigation
1116to1120
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Blatt automatisch löschen ....

Blatt automatisch löschen ....
WalterK
Hallo,
Meine Mappe "Zusammenfassung" hat mehrere Blätter.
Aus anderen Mappen werden über "verschieben/kopieren" Blätter in diese Mappe kopiert.
Wird ein Blatt mit dem Namen "Aufstellung" hinein kopiert, soll geprüft werden, ob in der Mappe "Zusammenfassung" ein solches Blatt schon vorhanden ist. Wenn ja, soll zuerst das "alte" Blatt "Aufstellung" gelöscht werden und dann das neue Blatt "Aufstellung" hinein kopiert werden.
Kann mir jemand behilflich sein.
Servus, Walter

6
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Benutzer
Anzeige
Kopiertes Blatt aus Zielmappe löschen
19.11.2009 22:53:27
NoNet
Hallo Walter,
folgende Lösung sollte bei EINEM kopierten Blatt funktionieren :
Kopiere diesen VBA-Code in die Mappe "Zusammenfassung" in das Klassenmodul "DieseArbeitsmappe" im VBA-Editor :
Dim intBlattAnzahl
Private Sub Workbook_WindowActivate(ByVal Wn As Window)
Dim shDummy
If ThisWorkbook.Sheets.Count > intBlattAnzahl Then
On Error Resume Next
Err.Clear
Set shDummy = Sheets(Left(ActiveSheet.Name, Len(ActiveSheet.Name) - 4))
If Err = 0 Then
Application.DisplayAlerts = False
Sheets(Left(ActiveSheet.Name, Len(ActiveSheet.Name) - 4)).Delete
ActiveSheet.Name = Left(ActiveSheet.Name, Len(ActiveSheet.Name) - 4)
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
PS : Das funktioniert allerdings nur, wenn EIN Blatt kopiert wurde (dieses ist dann das aktuelle Blatt), falls mehrere Blätter kopiert wurden, versagt das Makro, da nicht feststellbar ist, WELCHE Blätter hinein kopiert wurden (Excel bietet dazu leider kein Ereignis und kein passendes Objekt !).
Anzeige
Klappt wunderbar ...
19.11.2009 23:15:47
WalterK
Hallo NoNet,
... genau so sollte es sein (die Blätter werden auch nur einzeln hinein kopiert).
Besten Dank und Servus, Walter
Jetzt funktioniert es doch noch nicht ganz...
19.11.2009 23:38:16
WalterK
Hallo NoNet,
ich habe es jetzt an meiner Originaldatei ausprobiert.
Der Code funktioniert, solange der Blattname höchstens 27 Stellen lang ist. Bei 28 Stellen funktioniert der Code nicht mehr (darauf muss man erst einmal kommen!?!).
Mein Blattname hat 29 Stellen und der ist so vorgegeben.
Lässt sich da etwas machen?
Danke und Servus, Walter
Ich hatte es fast befürchtet...
20.11.2009 00:10:35
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)  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
Anzeige
Besten Dank, jetzt funktionierts. Servus, Walter
20.11.2009 07:39:16
WalterK
AW: Jetzt funktioniert es doch noch nicht ganz...
20.11.2009 01:27:42
fcs
Hallo Walter,
da ist bei dem Makro in der Form dann nichts zu machen, die Zeichenzahl für Tabellenblattnamen ist auf 31 begrenzt.
Beim Kopieren gleicher Blattnamen fügt Excel ja automatisch die Zählnummer in Klammern ein. Wird dabei die max. Namenslänge erreicht, dann werden Zeichen des Namens überschrieben. Das wird dir hier zum Verhängnis.
Um das zu umgehen müßtest du anders kopieren. Nämlich das zu kopierende Blatt "holen" statt es in die Datei "reinzuschmeissen". Dann kann man vor dem Einfügen des geholten Blattes prüfen ob ein Blatt gleichen Namens schon vorhanden ist. Das ist allerdings etwas aufwendiger in der Programmierung.
Gruß
Franz
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige