Code soll bei Tabellenblatt kopieren mitkommen

Hallo liebe Excelgemeinde,

Ich habe einen Makro- Code, der in einem Tabellenbaltt ist. Wie schaffe ich es, bei einem kopieren des Blattes, das der Code ebenfalls für das neue Tabellenblatt „zuständig“ ist?
Der Code hier als Kopie eingefügt.

Private Sub Worksheet_Change(ByVal Target As Range)
ActiveSheet.Unprotect

If Target.Column > 1 Or Target.Cells.Count 1 Then Exit Sub 'wenn keine Eingabe in Spalte 1 ENDE
With Target
Select Case .Row

Case 11 To 20 ', 30 To 35 'hier wird von Zeile 11 bis 20 kopiert
'dann von Zeile 30 bis 35 kopieren

.Offset(-1, 1).Resize(1, 4).Copy .Offset(0, 1) 'hier bis E(=4 Spalten nach A)

.Offset(-1, 6).Resize(1, 1).Copy .Offset(0, 6) 'hier von G bis G; 1 Spalten kopieren

.Offset(-1, 15).Resize(1, 9).Copy .Offset(0, 15) 'hier von P bis X; 9 Spalten kopieren

Case Else
'nix
End Select
End With
ActiveSheet.Protect

End Sub

Oder anderes gefragt, wo müsste der Code im Visual Basic stehen?
Arbeitsblatt hatte ich schon probiert, leider nichts.
Tabellenblatt, ok läuft.
In eine Modul, kenne ich mich nicht so aus,?
Oder müsste , schlimmstenfalls der Code verändert werden?
Für schnelle hilfe wäre ich sehr dankbar

Hallo Küchenjunge.

Ich habe einen Makro- Code, der in einem Tabellenbaltt ist.
Wie schaffe ich es, bei einem kopieren des Blattes, das der
Code ebenfalls für das neue Tabellenblatt „zuständig“ ist?
Der Code hier als Kopie eingefügt.

Eigentlich sollte es funktionieren, wenn Du den Code in das „Workbook_SheetChange“-Ereignis packst. Du „findest“ es in „DieseArbeitsmappe“

Möglicherweise hast Du noch andere Tabellenblätter in Deiner Datei, bei denen der Code nicht ausgeführt werden soll. Wenn das der Fall sein sollte, dann kannst Du mit einem „Select Case“-Block die Ausführung des Codes für diese Tabellenblättern verhindern.

VG
Carsten

Hallo Carsten,
erst einmal Dank für deine hilfe.

Hallo Küchenjunge.

Ich habe einen Makro- Code, der in einem Tabellenbaltt ist.
Wie schaffe ich es, bei einem kopieren des Blattes, das der
Code ebenfalls für das neue Tabellenblatt „zuständig“ ist?
Der Code hier als Kopie eingefügt.

Eigentlich sollte es funktionieren, wenn Du den Code in das
„Workbook_SheetChange“-Ereignis packst. Du „findest“ es in
„DieseArbeitsmappe“

Könntes du bis in meinem Code vileleicht mal abändern.

Möglicherweise hast Du noch andere Tabellenblätter in Deiner
Datei, bei denen der Code nicht ausgeführt werden soll. Wenn
das der Fall sein sollte, dann kannst Du mit einem „Select
Case“-Block die Ausführung des Codes für diese
Tabellenblättern verhindern.

Genau, so ist es. In der Arbeitsmappe sind auch ander Tabellen die dies nicht betreffen sollte
Gruss der Kuechenjunge

VG
Carsten

Hallo Küchenjunge.

Der Code sollte ungefähr so aussehen:

Private Sub WorkBook\_SheetChange(ByVal Sh As Object, ByVal Target As Range)

Select Case Sh.CodeName
 Case TabelleX, TabelleY 'Alle Codenamen der Tabellen hierhin schreiben, in denen der Code ausgeführt werden soll
 ActiveSheet.Unprotect
 If Target.Column \> 1 Or Target.Cells.Count 1 Then Exit Sub 'wenn keine Eingabe in Spalte 1 ENDE
 With Target
 Select Case .Row
 Case 11 To 20 ', 30 To 35 'hier wird von Zeile 11 bis 20 kopiert, dann von Zeile 30 bis 35 kopieren
 .Offset(-1, 1).Resize(1, 4).Copy .Offset(0, 1) 'hier bis E(=4 Spalten nach A)
 .Offset(-1, 6).Resize(1, 1).Copy .Offset(0, 6) 'hier von G bis G; 1 Spalten kopieren
 .Offset(-1, 15).Resize(1, 9).Copy .Offset(0, 15) 'hier von P bis X; 9 Spalten kopieren
 End Select
 End With
 ActiveSheet.Protect
End Select
End Sub

Hoffe, daß es funktioniert

VG
Carsten

Sorry, hier das richtigere
Hallo Küchenjunge.

Das war naturlich ein Haufen Unsinn, was ich da geschrieben habe.

So soll es richtig sein:

Private Sub WorkBook\_SheetChange(ByVal Sh As Object, ByVal Target As Range)
 Select Case Sh.CodeName
 Case TabelleX, TabelleY 'Alle Codenamen der Tabellen hierhin schreiben, in denen der Code **nicht** ausgeführt werden soll
 Exit sub
 End Select
 ActiveSheet.Unprotect
 If Target.Column \> 1 Or Target.Cells.Count 1 Then Exit Sub 'wenn keine Eingabe in Spalte 1 ENDE
 With Target
 Select Case .Row
 Case 11 To 20 ', 30 To 35 'hier wird von Zeile 11 bis 20 kopiert, dann von Zeile 30 bis 35 kopieren
 .Offset(-1, 1).Resize(1, 4).Copy .Offset(0, 1) 'hier bis E(=4 Spalten nach A)
 .Offset(-1, 6).Resize(1, 1).Copy .Offset(0, 6) 'hier von G bis G; 1 Spalten kopieren
 .Offset(-1, 15).Resize(1, 9).Copy .Offset(0, 15) 'hier von P bis X; 9 Spalten kopieren
 End Select
 End With
 ActiveSheet.Protect
End Sub

Hoffe, daß das jetzt funktioniert.

VG
Carsten

Hallo Carsten, und denn Code gebe ich jetzt in der Arbeitsmappe ein??

gruss der kuechenjunge

Hallo Küchenjunge.

Hallo Carsten, und denn Code gebe ich jetzt in der
Arbeitsmappe ein??

Ja, Im Codefenster von „DieseArbeitsmappe“

VG
Carsten