Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1804to1808
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

Tabblatt kopieren + umbenennen

Tabblatt kopieren + umbenennen
10.01.2021 21:05:59
Mildred
Hallo zusammen,
ich benötige ein Makro, dass ein Tabellenblatt kopiert und umbenennt, wenn in bestimmten Zellen etwas per Drop Down ausgewählt wird. Der Name des neuenTabellenblattes steht in verschiedenen Zellen. Ich habe es bereits geschafft, dass das Tabellenblatt kopiert wird und auch umbenannt wird, allerdings in den Namen aus dem Drop Down Feld.
Eine Beispieldatei findet ihr unter folgendem Link:
https://www.herber.de/bbs/user/142904.xlsm
Vielen Dank vorab für eure Hilfe.
V.G. Mildred

7
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Tabblatt kopieren + umbenennen
10.01.2021 21:34:09
onur
"wenn in bestimmten Zellen etwas per Drop Down ausgewählt wird" ? Aber dein Code reagiert auch, wenn "e" geändert wird.
"Schrägstriche (/) im Text durch leer ersetzt werden" ? Bei dir werden sie einfach nur gelöscht.
AW: Tabblatt kopieren + umbenennen
10.01.2021 22:56:00
Mildred
Hallo,
in Spalte E wird ein anderes Makro angesteuert, das Makro für Spalte K soll unabhängig agieren. Sorry, hast recht, der Schrägstrich wird einfach entfernt und nicht durch leer ersetzt, was auch richtig ist.
V.G. Mildred
AW: Tabblatt kopieren + umbenennen
11.01.2021 15:58:15
Oisse
Hallo Mildred
teste mal:
Option Explicit
Private Sub Worksheet_Change(ByVal Target As Excel.Range)
Dim Fehler As Integer, ws As Object
Dim Nam As String
If Target.Column = 5 Then
Select Case Target.Row
Case 12, 18, 24, 30
If Not IsEmpty(Cells(Target.Row, 5).Value) Then
mstrSheetname = Left("ICTP " & Replace(Cells(Target.Row, 5), "/", ""), 25)
If MsgBox("Tabellenblatt mit Name """ & mstrSheetname & """ anlegen?", _
vbYesNo, "Blatt Vorlage kopieren") = vbYes Then
For Each ws In ThisWorkbook.Worksheets
If ws.Name = mstrSheetname Then
MsgBox "Blatt mit dem eingegeben Namen " & mstrSheetname _
& " existiert bereits!"
Target.Select
Application.ScreenUpdating = True
Exit Sub
End If
Next
Application.ScreenUpdating = False
With Worksheets("Tabblatt kopieren")
.Visible = xlSheetVisible
.Copy Before:=Worksheets("Tabblatt kopieren")
.Visible = xlSheetVeryHidden
End With
ActiveSheet.Name = Left(mstrSheetname, 25)
End If
End If
If IsEmpty(Cells(Target.Row, 5).Value) Then
For Each ws In ThisWorkbook.Worksheets
If ws.Name = mstrSheetname Then
If MsgBox("Das Sheet ''" & mstrSheetname & "'' löschen?", vbQuestion Or  _
vbYesNo, "Abfrage") = vbYes Then
Application.DisplayAlerts = False
Worksheets(mstrSheetname).Delete
End If
Exit For
End If
Next ws
End If
Case Else
End Select
End If
If Target.Column = 11 Then
Select Case Target.Row
Case 16, 22, 28, 34
Nam = Left(Replace("ICTP " & Cells(Target.Row - 4, 5), "/", ""), 25)
If Not IsEmpty(Target.Cells(1, 1).Value) Then
If MsgBox("Tabellenblatt mit Name " & Nam & " anlegen ?", _
vbYesNo, "Blatt Vorlage kopieren") = vbYes Then
For Each ws In ThisWorkbook.Worksheets
If ws.Name = Nam Then
MsgBox "Blatt mit dem eingegeben Namen " & mstrSheetname _
& " existiert bereits!"
Target.Select
Application.ScreenUpdating = True
Exit Sub
End If
Next
With Worksheets("Tabelle2")
.Visible = xlSheetVisible
.Copy Before:=Worksheets("Tabelle2")
.Visible = xlSheetVeryHidden
ActiveSheet.Name = Nam
End With
End If
Else
For Each ws In ThisWorkbook.Worksheets
If ws.Name = mstrSheetname Then
If MsgBox("Das Sheet ''" & mstrSheetname & "'' löschen?", vbQuestion Or  _
vbYesNo, "Abfrage") = vbYes Then
Application.DisplayAlerts = False
Worksheets(mstrSheetname).Delete
End If
Exit For
End If
Next ws
End If
Case Else
End Select
End If
Worksheets("Deckblatt Pos 1-4").Select
End Sub

Liebe Grüße
Oisse
Anzeige
AW: Tabblatt kopieren + umbenennen
11.01.2021 17:50:55
Mildred
Hallo Oisse,
vielen Dank für deine Hilfe.
Da eigentlich nur der Teil des Makros ab If "Target.Column = 11..." angepasst werden brauch, habe ich deinen Code auch nur ab dem Bereich eingefügt. Jetzt wird allerdings der Name des Tabellenblatts "Deckblatt Pos 1-4" in den Namen umbenannt, der eigentlich für das kopierte Blatt gelten sollte. Ich habe übrigens eine Anpassung bei deinem Makro vorgenommen aus "Nam" habe ich "Name" gemacht, weil die Meldung "variable nicht defniert" angezeigt wurde. Oder ist das vielleicht der Grund warum das Tabellenblatt "Deckblatt Pos 1-4" jetzt umbenannt wird?
Der Teil des Makros sieht jetzt wie folgt aus:
If Target.Column = 11 Then
Select Case Target.Row
Case 16, 22, 28, 34
Name = Left(Replace("ICTP " & Cells(Target.Row - 4, 5), "/", ""), 25)
If Not IsEmpty(Target.Cells(1, 1).Value) Then
If MsgBox("Tabellenblatt mit Name " & Name & " anlegen ?", _
vbYesNo, "Blatt Vorlage kopieren") = vbYes Then
For Each ws In ThisWorkbook.Worksheets
If ws.Name = Name Then
MsgBox "Blatt mit dem eingegeben Namen " & mstrSheetname _
& " existiert bereits!"
Target.Select
Application.ScreenUpdating = True
Exit Sub
End If
Next
With Worksheets("Tabelle2")
.Visible = xlSheetVisible
.Copy Before:=Worksheets("Tabelle2")
.Visible = xlSheetVeryHidden
ActiveSheet.Name = Name
End With
End If
Else
For Each ws In ThisWorkbook.Worksheets
If ws.Name = mstrSheetname Then
If MsgBox("Das Sheet ''" & mstrSheetname & "'' löschen?", vbQuestion Or _
vbYesNo, "Abfrage") = vbYes Then
Application.DisplayAlerts = False
Worksheets(mstrSheetname).Delete
End If
Exit For
End If
Next ws
End If
Case Else
End Select
End If
Worksheets("Deckblatt Pos 1-4").Select
End Sub
V.G. Mildred
Anzeige
AW: Tabblatt kopieren + umbenennen
11.01.2021 18:48:43
Oisse
Hallo Mildred,
denkst Du, Du könntest meinen Code trotzdem mal testen?
Als ich Deinen getestet habe, auch bei Target.Column (5) hat´s bei mir nicht so funktioniert.
Ich habe deswegen "Nam" geschrieben weil "Name" in Excel fest vergeben ist und deshalb nicht verwendet werden sollte und das ist auch der Grund, warum er das Tabellenblatt "Deckblatt Pos 1-4" umbenennt, weil er unter "Name" den Namen des aktuellen Tabellenblattes schreibt.
Wenn Du Dir meinen Code ansiehst, erkennst Du, dass "Nam" als "String" dimensioniert wurde.
Allerdings habe ich vergessen, auch "mstrSheetname" als "String" zu dimensionieren.
Übrigens müsstest Du auch das Calculate Ereignis löschen, weil er sonst immer nach einem falschen Namen die Tabellenblätter durchsucht.
Deshalb also der code nochmal:

Option Explicit
Private Sub Worksheet_Change(ByVal Target As Excel.Range)
Dim Fehler As Integer, ws As Object
Dim Nam, mstrSheetname As String
If Target.Column = 5 Then
Select Case Target.Row
Case 12, 18, 24, 30
If Not IsEmpty(Cells(Target.Row, 5).Value) Then
mstrSheetname = Left("ICTP " & Replace(Cells(Target.Row, 5), "/", ""), 25)
If MsgBox("Tabellenblatt mit Name """ & mstrSheetname & """ anlegen?", _
vbYesNo, "Blatt Vorlage kopieren") = vbYes Then
For Each ws In ThisWorkbook.Worksheets
If ws.Name = mstrSheetname Then
MsgBox "Blatt mit dem eingegeben Namen " & mstrSheetname _
& " existiert bereits!"
Target.Select
Application.ScreenUpdating = True
Exit Sub
End If
Next
Application.ScreenUpdating = False
With Worksheets("Tabblatt kopieren")
.Visible = xlSheetVisible
.Copy Before:=Worksheets("Tabblatt kopieren")
.Visible = xlSheetVeryHidden
End With
ActiveSheet.Name = Left(mstrSheetname, 25)
End If
End If
If IsEmpty(Cells(Target.Row, 5).Value) Then
For Each ws In ThisWorkbook.Worksheets
If ws.Name = mstrSheetname Then
If MsgBox("Das Sheet ''" & mstrSheetname & "'' löschen?", vbQuestion Or  _
vbYesNo, "Abfrage") = vbYes Then
Application.DisplayAlerts = False
Worksheets(mstrSheetname).Delete
End If
Exit For
End If
Next ws
End If
Case Else
End Select
End If
If Target.Column = 11 Then
Select Case Target.Row
Case 16, 22, 28, 34
Nam = Left(Replace("ICTP " & Cells(Target.Row - 4, 5), "/", ""), 25)
If Not IsEmpty(Cells(Target.Row, 11).Value) Then
If MsgBox("Tabellenblatt mit Name " & Nam & " anlegen ?", _
vbYesNo, "Blatt Vorlage kopieren") = vbYes Then
For Each ws In ThisWorkbook.Worksheets
If ws.Name = Nam Then
MsgBox "Blatt mit dem eingegeben Namen " & mstrSheetname _
& " existiert bereits!"
Target.Select
Application.ScreenUpdating = True
Exit Sub
End If
Next
With Worksheets("Tabelle2")
.Visible = xlSheetVisible
.Copy Before:=Worksheets("Tabelle2")
.Visible = xlSheetVeryHidden
ActiveSheet.Name = Nam
End With
End If
End If
If IsEmpty(Cells(Target.Row, 11).Value) Then
For Each ws In ThisWorkbook.Worksheets
If ws.Name = Nam Then
If MsgBox("Das Sheet ''" & Nam & "'' löschen?", vbQuestion Or vbYesNo, " _
Abfrage") = vbYes Then
Application.DisplayAlerts = False
Worksheets(Nam).Delete
End If
Exit For
End If
Next ws
End If
Case Else
End Select
End If
Worksheets("Deckblatt Pos 1-4").Select
End Sub

L.G.
Oisse
Anzeige
AW: Tabblatt kopieren + umbenennen
11.01.2021 21:07:27
Mildred
Hallo Oisse,
habe deinen Code 1:1 getestet. Musste im Makro eine kleine Anpassung vornehmen. Du hattest im Bereich If Target Column = 11 Then folgendes geschrieben
If MsgBox("Das Sheet ''" & Nam & "'' löschen?", vbQuestion Or vbYesNo, " _
Abfrage") = vbYes Then
ich habe es abgeändert in
If MsgBox("Das Sheet ''" & Nam & "'' löschen?", vbQuestion Or vbYesNo, "Abfrage ") = vbYes Then
Grundsätzlich funktioniert dein Code, allerdings hebelt sich der eine Befehl mit dem anderen Befehl aus. Sowohl in Spalte 5 als auch in Spalte 11 wird der gleiche Name angelegt, wenn in den jeweiligen Zellen etwas eingetragen wird. D.h. wenn ich bspw. in Spalte 5 und Zeile 12 etwas eingebe, wird das Tabellenblatt "Tabblatt kopieren" kopiert und umbenannt. Wenn ich anschließend in Spalte 11 und Zeile 16 etwas eingebe, wird zwar das Tabellenblatt "Tabelle2" kopiert, allerdings kann es nicht angelegt werden, weil der Name bereits existiert (entspricht dem kopierten Tabellenblatt "Tabblatt kopieren"). Ich hoffe, dass du mir folgen kannst. Ich bin nicht so gut im Eklären.
Ich habe jetzt aber deinen Code mit meinem Code kombiniert und es klappt super!!!!
Vielen Dank für deine Hilfe!!!!
V.G. Mildred
Anzeige
Na dann..
11.01.2021 21:41:23
Oisse
passts ja. Freut mich, wenn ich dir helfen konnte.
Sorry für das scheinbare Missverständnis bezüglich Namensgebung.
Gruß Oisse

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige