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

Makro zum kopieren

Makro zum kopieren
19.07.2022 09:19:00
Dave
Hallo zusammen,
Ich bin leider nicht so stark was VBA angeht und hätte eine Frage zu einer Makro.
1. Und zwar würde ich gerne eine Makro haben die auf Tabellenblatt "Vorlage" von A1 bis L108 alles markiert und kopiert und auf dem Tabellenblatt auf dem ich mich befinde einfügt in A1.
Extra: Ich weiß nicht wie schwer sowas zu programmieren ist, aber was richtig stark wäre, wenn die Makro von alleine die Tabellenblätter erstellt, umbenennt und dann das ganze von 1. Er sollte dann also so viele Tabellenblätter erstellen wie viele Zeilen es in der Tabelle auf Tabellenblatt "Übersicht" gibt (B4 ist der Spaltenkopf bei dem die Tabellenblatt Namen stehen, ist einfach #1,#2,#3...) und dann soll er aus "Vorlage" A1 bis L108 alles in die Tabellenblätter reinkopieren.
Hoffe ihr konntet mir einigermaßen folgen, und hättet Ideen :D
LG
Dave

16
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Makro zum kopieren
19.07.2022 09:44:51
Oberschlumpf
Moin Dave
erst mal, es heißt nicht DIE Makro, sondern DAS Makro.
Ich kann deiner Beschreibung ein bisschen folgen.
Schön wäre es, wenn du uns per Upload eine Bsp-Excel-Datei (nicht Bilder!) zeigst, mit allem, was erforderlich ist, um deine Beschreibung noch besser zu verstehen, und um testen zu können.
Ciao
Thorsten
AW: Makro zum kopieren
19.07.2022 11:06:36
David
Hallo Thorsten,
danke für die Verbesserung, dann spar ich mir ab jetzt den peinlichen Fehler :D
Hab jetzt schon eine Lösung, vielen Dank für die Hilfe :)
LG Dave
AW: Makro zum kopieren
19.07.2022 10:13:32
GerdL
Moin Dave,
teste mal.

Sub Unit()
Worksheets("Vorlage").Range("A1:L108").Copy ActiveSheet.Cells(1, 1)
End Sub
Sub Extra()
Dim i As Integer
For i = 5 To Worksheets("Übersicht").Cells(Worksheets("Übersicht").Rows.Count, 2).End(xlUp).Row
Worksheets.Add after:=Sheets(Sheets.Count)
ActiveSheet.Name = Worksheets("Übersicht").Cells(i, 2).Text
Worksheets("Vorlage").Range("A1:L108").Copy Destination:=ActiveSheet.Cells(1, 1)
Next
End Sub
Gruß Gerd
Anzeige
AW: Makro zum kopieren
19.07.2022 11:07:00
David
Hey Gerd,
habe eben deine Programme auch mal ausprobiert und es funktioniert genau richtig :)
Vielen Dank!
LG Dave
AW: Makro zum kopieren
19.07.2022 10:37:29
Daniel
HI
hier mal zwei Varianten, die Aufgabe zu lösen.
bei nur Inhalte kopieren werden die Zellinhalte, Formeln und Formate von der Vorlage in das neue Blatt kopiert.
bei alles kopieren wird das Sheet vollständig kopiert, dh incl Seiteneinrichtung und ggf vorhandenen Makros.

Sub Kopieren_Vorlage_nur_Inhalte()
Dim Zelle As Range
Dim sh As Worksheet
For Each Zelle In Sheets("Übersicht").Range("B5:B100").SpecialCells(xlCellTypeConstants, 2)
Set sh = Sheets.Add(after:=ActiveWorkbook.Sheets(ThisWorkbook.Sheets.Count))
sh.Name = Zelle.Value
Sheets("Vorlage").Range("A1:L108").Copy Destination:=sh.Range("A1")
Next
End Sub

Sub Kopieren_Vorlage_alles()
Dim Zelle As Range
For Each Zelle In Sheets("Übersicht").Range("B5:B100").SpecialCells(xlCellTypeConstants, 2)
Sheets("Vorlage").Copy after:=ActiveWorkbook.Sheets(ActiveWorkbook.Sheets.Count)
ActiveSheet.Name = Zelle.Value
Next
End Sub
Gruß Daniel
Anzeige
AW: Makro zum kopieren
19.07.2022 10:59:31
David
Hey Daniel,
genau das hab ich gebraucht. Hab mich gerade richtig gefreut als das so geklappt hat wie ich mir das vorgestellt habe :D
Vielen Dank!
AW: Makro zum kopieren
19.07.2022 11:17:31
Dave
Hey Daniel,
nochmal eine Kleinigkeit, ob man das auch irgendwie einbauen könnte.
Alles Kopieren ist genau das was ich brauchte, ich wusste nicht mal das es so gut funktioniert und war schon bereit die Blätter nachträglich zu formatieren :D
Könnte man da noch sowas einbauen, dass wenn ein Tabellenblattname schon existiert, das Tabellenblatt gelöscht und ersetzt wird?
LG Dave
AW: Makro zum kopieren
19.07.2022 11:25:04
Daniel
Wie siehts aus mit Tabellenblättern, die nicht in der Liste stehen?
sollten die erhalten bleiben oder sollen die ebenfalls gelöscht werden, so das nur die Tabellenblätter vorhanden sind, die in der Liste stehen (Blatt Übersicht und Vorlage natürlich ausgenommen).
Dann könnte man vorab einfach alle vorhandenen Blätter löschen:

for each sh in activeWorkbook.Worksheets
Select sh.Name
Case "Übersicht", "Vorlage"
Case else
Application.DisplayAlerts = false
sh.delete
Application.DisplayAlerts = true
End Select
Next
Gruß Daniel
Anzeige
AW: Makro zum kopieren
19.07.2022 11:46:27
Dave
Ne die anderen Tabellenblätter sollten erhalten bleiben. Sind aber auch nur 3 andere das ich sie mit reinnehmen kann.
Müsste das Programm dann nicht so aussehen?

Sub Kopieren_Vorlage_alles()
For Each sh In ActiveWorkbook.Worksheets
Select sh.Name
Case "Übersicht", "Vorlage", "Cluster", "Cluster2", "Location"
Case Else
Application.DisplayAlerts = False
sh.Delete
Application.DisplayAlerts = True
End Select
Next
Dim Zelle As Range
For Each Zelle In Sheets("Übersicht").Range("B5:B100").SpecialCells(xlCellTypeConstants, 2)
Sheets("Vorlage").Copy after:=ActiveWorkbook.Sheets(ActiveWorkbook.Sheets.Count)
ActiveSheet.Name = Zelle.Value
Next
End Sub
Er zeigt mir aber einen Fehler in Zeile 3 an "Select sh.Name"
Was hab ich falsch gemacht, sorry kenne mich wirklich nicht gut aus.
LG
Anzeige
AW: Makro zum kopieren
19.07.2022 11:52:26
GerdL
Moin Dave,
du musst sh deklarien. Erste Codezeile einfügen:
Dim sh As Worksheet
Gruß Gerd
AW: Makro zum kopieren
19.07.2022 12:04:55
Dave
Hey Gerd,
ahh ok verstehe, er will aber immer noch nicht richtig.

Sub Kopieren_Vorlage_alles()
Dim sh As Worksheet
For Each sh In ActiveWorkbook.Worksheets
Select sh.Name
Case "Übersicht", "Vorlage", "Cluster", "Cluster2", "Location", "Test", "Test2"
Case Else
Application.DisplayAlerts = False
sh.Delete
Application.DisplayAlerts = True
End Select
Next
Dim Zelle As Range
For Each Zelle In Sheets("Übersicht").Range("B5:B100").SpecialCells(xlCellTypeConstants, 2)
Sheets("Vorlage").Copy after:=ActiveWorkbook.Sheets(ActiveWorkbook.Sheets.Count)
ActiveSheet.Name = Zelle.Value
Next
End Sub
Sonst noch eine Idee?
LG Dave
Anzeige
AW: Makro zum kopieren
19.07.2022 12:17:54
GerdL
In welcher Codezeile mit welcher Fehlermeldung bleibt das Mako hängen?
In welches Modul hast du den Code geschrieben?
Gruß Gerd
AW: Makro zum kopieren
19.07.2022 12:47:01
Daniel
Hi
du hast da einen Schreibfehler drin.
es muss heißen Select Case sh.Name
hier noch eine alternative, die vielleicht mehr dem entspricht, was du beschrieben hast.
hier wird ein Tabellenblatt nur dann gelöscht, wenn es über die Liste erstellt werden soll und bereits vorhanden ist.

Sub Kopieren_Vorlage_alles()
Dim sh As Worksheet
Dim Zelle As Range
For Each Zelle In Sheets("Übersicht").Range("B5:B100").SpecialCells(xlCellTypeConstants, 2)
For Each sh In acitveworkbook.Worksheets
If sh.Name = Zelle.Value Then
Application.DisplayAlerts = False
sh.Delete
Application.DisplayAlerts = True
Exit For
End If
Next
Sheets("Vorlage").Copy after:=ActiveWorkbook.Sheets(ActiveWorkbook.Sheets.Count)
ActiveSheet.Name = Zelle.Value
Next
End Sub
Gruß Daniel
Anzeige
AW: Makro zum kopieren
19.07.2022 13:01:02
Dave
Hey nochmal,
hier zeigt er leider wieder einen Fehler in Zeile 5 an "For Each sh In acitveworkbook.Worksheets"
Also gleich zu beginn.
Ich wüsste nicht weiter, danke schonmal für deine/eure Hilfe :)
LG Dave
AW: Makro zum kopieren
19.07.2022 13:09:22
Daniel
ActiveWorkbook
nutze, wenn du programmierst, die Intellisene (erste buchstaben eintippen, dann STRG+Leer)
ich schreibe die Codes auch mal direkt ins Forum, da habe ich die unterstützung nicht.
AW: Makro zum kopieren
19.07.2022 13:26:05
Dave
Jetzt funktioniert alles Tip Top,
danke für den Tipp und riesen Dank für die Hilfe an sich :)
Grüße Dave

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige