Live-Forum - Die aktuellen Beiträge
Datum
Titel
28.03.2024 21:12:36
28.03.2024 18:31:49
Anzeige
Archiv - Navigation
1508to1512
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

Tabellenblätter zusammenfügen

Tabellenblätter zusammenfügen
05.08.2016 15:32:34
Marina
Hallo,
ich habe im Archiv folgenden Code gefunden, bei dem ich denke, dass er für meine Exceltabelle passend wäre:
Sub neut()
Application.DisplayAlerts = False
Application.ScreenUpdating = False
For i = 1 To Sheets.Count + 1
If i > Sheets.Count Then
Set NewSheet = Worksheets.Add
NewSheet.Name = "Alle Adressen"
End If
If Sheets(i).Name = "Alle Adressen" Then
Exit For
End If
Next i
Set ws1 = Worksheets("Alle Adressen")
Set ws3 = Worksheets("Daten")
anz1 = ws1.Cells(65356, 1).End(xlUp).Row
anz = ws3.Cells(65356, 1).End(xlUp).Row     '
ws1.Range("a2:v" & anz1).ClearContents
For i = 2 To anz
If Sheets(i).Name  "Alle Adressen" And Sheets(i).Name  "Daten" And ws3.Cells(i, 1)  "" _
_
Then
anz1 = ws1.Cells(65356, 1).End(xlUp).Row
Set ws2 = Worksheets(ws3.Cells(i, 1))
anz2 = ws2.Cells(65356, 1).End(xlUp).Row
ws2.Range("a2:v" & anz2).Copy Destination:=ws1.Range("a" & anz1 + 1)
End If
Next i
Cells.Select
Selection.Columns.AutoFit
Sheets("ADohneADM").Select
Rows("1:1").Select
Selection.Copy
Sheets("Alle Adressen").Select
Range("A1").Select
ActiveSheet.Paste
Sheets("Alle Adressen").Select
Cells.Select
Application.CutCopyMode = False
Selection.Sort Key1:=Range("B2"), Order1:=xlAscending, Header:=xlGuess, _
OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _
DataOption1:=xlSortNormal
Cells.Select
ActiveWorkbook.Names.Add Name:="AD", RefersToR1C1:= _
"='Alle Adressen'!R1:R65536"
Rows("2:2").Select
ActiveWindow.FreezePanes = True
Rows("1:1").Select
Selection.AutoFilter
Range("A2").Select
Sheets("Start").Select
Application.DisplayAlerts = True
Application.ScreenUpdating = True
End Sub
Kurz zu meinem Anliegen:
Ich habe eine Exceltabelle mit diversen Tabellenblättern.
Davon soll der Inhalt der Tabellenblätter (Monate von Sept 16 - Juli 17) ab Zelle A5 in einem neuen Tabellenblatt zusammengefügt werden.
Den Code habe ich in ein neues Modul in den VBA-Editor kopiert.
Habe mir auch ein Tabellenblatt "Daten" angelegt und mit den Namen der von mir benötigten Tabellenblättern ausgefüllt.
Leider wird das Makro nicht richtig ausgeführt.
Es bleibt in folgender Zeile stehen:
Set ws2 = Worksheets(ws3.Cells(i, 1))
Kann mir bitte jmd. behilflich sein?
Wo liegt der Fehler?
Vielen Dank
Marina

11
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Tabellenblätter zusammenfügen
05.08.2016 15:55:08
Fennek
Hallo,
was steht denn in der Zelle ws3.cells(i,1)?
Falls dort nicht der Name eines existierenden Sheets bzw die entsprechende Index-Nummer steht, gibt es eine Fehlermeldung.
mfg
AW: Tabellenblätter zusammenfügen
05.08.2016 21:33:50
Marina
Hallo,
naja, ich kenne mich mit VBA nicht wirklich aus.
Wie gesagt, ich hab den Code im Archiv dieses Forums entdeckt.
AW: Tabellenblätter zusammenfügen
05.08.2016 21:34:17
Marina
Hallo,
naja, ich kenne mich mit VBA nicht wirklich aus.
Wie gesagt, ich hab den Code im Archiv dieses Forums entdeckt.
AW: Tabellenblätter zusammenfügen
06.08.2016 10:03:13
Bastian
Ja du musst eine Beispiel Datei hochladen damit wir sehen was in der Zelle drin steht wo der Fehler kommt . Wie oben schon erwähnt sollte in der Besagten Zelle ein Name Stehen von einen Tabellenblatt in deine Workbook sonst ist es klar das ein Fehler kommt.
Gruß Basti
Anzeige
AW: Tabellenblätter zusammenfügen
08.08.2016 17:56:27
Marina
Habe jetzt eine Beispieldatei hochgeladen.
https://www.herber.de/bbs/user/107477.xlsm
Es sollen alle Tabellenblätter mit Monatsnamen von Sep 15 - Jul 16 in ein Tabellenblatt zusammengeführt werden.
(Neben den Tabellenblättern mit Monatsnamen gibt es noch einige andere Tabellenblätter die nicht in die Zusammenfassung sollen.)
Die Spaltenüberschriften (also alles, von Zelle A1 bis X5) sollten auch einmal übernommen werden.
Ansonsten soll in jedem oben genannten Tabellenblatt ab Zelle A5 bis X600 alles zusammengefügt werden.
Das Tabellenblatt mit der Zusammenfassung soll "Aktuelle Vertretungen" heißen.
Dankeschön für Eure Hilfe.
Gruß Marina
Anzeige
AW: Tabellenblätter zusammenfügen
09.08.2016 09:25:40
baschti007
So müsste es gehen Ich habe aber die Überschrift der einzelnen Monate mit hin kopiert weil das sonst nicht wirklich übersichtlich ist.
Gruß Basti
https://www.herber.de/bbs/user/107490.xlsm
AW: Tabellenblätter zusammenfügen
09.08.2016 14:45:14
Marina
Vielen Dank.
Klappt wunderbar.
Die Überschriften der einzelnen Monate hätte ich gar nicht benötigt.
Die Zusammenfassungstabelle wird nur zum Filtern benötigt.
Trotzdem noch ein paar Fragen:
Das Tabellenblatt "Daten" wird in deinem VBA Code nicht benötigt, richtig?
Was passiert, wenn ich noch weitere Tabellenblätter hinzufüge?
Muss ich dann im VBA-Code bei IF NOT alle Tabellenblätter nennen, die nicht in die Zusammenfassung dürfen?
Gruß Marina
Anzeige
AW: Tabellenblätter zusammenfügen
09.08.2016 14:45:28
Marina
Vielen Dank.
Klappt wunderbar.
Die Überschriften der einzelnen Monate hätte ich gar nicht benötigt.
Die Zusammenfassungstabelle wird nur zum Filtern benötigt.
Trotzdem noch ein paar Fragen:
Das Tabellenblatt "Daten" wird in deinem VBA Code nicht benötigt, richtig?
Was passiert, wenn ich noch weitere Tabellenblätter hinzufüge?
Muss ich dann im VBA-Code bei IF NOT alle Tabellenblätter nennen, die nicht in die Zusammenfassung dürfen?
Gruß Marina
AW: Tabellenblätter zusammenfügen
09.08.2016 15:28:37
baschti007
Dann So
Sub AV()
Application.DisplayAlerts = False
Dim ws As Worksheet
Dim wsAV As Worksheet
Dim Überschrift As Boolean
Überschrift = True
If WorksheetEx("Aktuelle Vertretungen") = True Then Worksheets("Aktuelle Vertretungen").Delete
Set wsAV = Worksheets.Add
wsAV.Name = "Aktuelle Vertretungen"
For Each ws In ThisWorkbook.Worksheets
If Not (ws.Name = "Übersicht" Or ws.Name = "Auslastung MR m Anr. Summe" Or ws.Name = "Daten" Or  _
ws.Name = "Aktuelle Vertretungen") Then
If Überschrift = True Then
ws.Range(ws.Cells(1, "A"), ws.Cells(LastRow(ws), "X")).Copy wsAV.Cells(1 + LastRow(wsAV), "A")
Else
ws.Range(ws.Cells(5, "A"), ws.Cells(LastRow(wsAV), "X")).Copy wsAV.Cells(1 + LastRow(wsAV), "A") _
End If
Überschrift = False
End If
Next
End Sub

Und ja einfach Or ws.Name = "NeuesTabellenBlattname" hinzufügen
Gruß Basti
Anzeige
AW: Tabellenblätter zusammenfügen
09.08.2016 19:28:28
Marina
Hab jetzt den Code an meine bestehenden Tabellenblätter angepasst.
Funktioniert super.
Kann ich als Überschrift auch nur die Zeile 2 und 3 nehmen?
Oder ist das umständlich?
Wie definiere ich das im VBA-Code?
Gruß Marina
AW: Tabellenblätter zusammenfügen
10.08.2016 07:51:17
Bastian

Sub AV()
Application.DisplayAlerts = False
Dim ws As Worksheet
Dim wsAV As Worksheet
Dim Überschrift As Boolean
Überschrift = True
If WorksheetEx("Aktuelle Vertretungen") = True Then Worksheets("Aktuelle Vertretungen").Delete
Set wsAV = Worksheets.Add
wsAV.Name = "Aktuelle Vertretungen"
For Each ws In ThisWorkbook.Worksheets
If Not (ws.Name = "Übersicht" Or ws.Name = "Auslastung MR m Anr. Summe" Or ws.Name = "Daten" Or  _
ws.Name = "Aktuelle Vertretungen") Then
If Überschrift = True Then
ws.Range(ws.Cells(2, "A"), ws.Cells(3, "X")).Copy wsAV.Cells(1 + LastRow(wsAV), "A") '---- Hier  _
Zeile 2 und 3 an Anfang als Überschrift
ws.Range(ws.Cells(5, "A"), ws.Cells(LastRow(ws), "X")).Copy wsAV.Cells(1 + LastRow(wsAV), "A")
Else
ws.Range(ws.Cells(5, "A"), ws.Cells(LastRow(wsAV), "X")).Copy wsAV.Cells(1 + LastRow(wsAV), "A") _
End If
Überschrift = False
End If
Next
End Sub

Hey Marina dann so du könntest auch einfach mal den Code mit F8 Laufenlassen dann siehst du was er genau macht und könntest solche kleinen Änderungen selber vornehmen.
Gruß Basti
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige