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

Zusammenfassung aller Blätter

Zusammenfassung aller Blätter
25.03.2015 21:20:39
WalterK
Hallo,
den nachfolgenden Code habe ich einmal im Internet gefunden. Er soll alle Daten aller Blätter in e1nem Blatt zusammen fassen.
Allerdings bleibt er bei der folgenden Zeile stehen:
objWB.Sheets(1).Cells(L, 1).Resize(UBound(vntArr), lsp) = vntArr
Es kommt der Fehler: Laufzeitfehler 13: Typen unverträglich
Wo liegt der Fehler?
Option Explicit
'Das Makro legt zuerste eine neue Datei an und kopiert dann alle
'in dieser Mappe vorhandenen Daten aller Blätter untereinander
'in 1 Blatt, es wird also eine Zusammenfassung aller Blätter erstellt.
'Die Ermittlung der letzten Spalte erfolgt anhand der Zeile 1 und
'die Ermittlung der letzten Zeile anhand der Spalte B.
Sub AlleBlätterInEineDateiKopieren()
Dim objWB As Workbook
Dim objWS As Worksheet
Dim L As Long
Dim vntArr As Variant
Dim lsp As Long
Dim lz As Long
Set objWB = Workbooks.Add 'Das VBA Programm sollte eine neue Datei erzeugen,..
L = 1
For Each objWS In ThisWorkbook.Worksheets 'dann klappert es Blatt 1...ab
With objWS
lsp = .Cells(1, .Columns.Count).End(xlToLeft).Column 'letzte benutzte Spalte  _
bezogen auf Zeile 1
lz = .Cells(.Rows.Count, 2).End(xlUp).Row 'letzte benutzte Zeile bezogen auf Spalte  _
2, also B
vntArr = .Range("A1", .Cells(lz, lsp)).Value 'kopiert das...
objWB.Sheets(1).Cells(L, 1).Resize(UBound(vntArr), lsp) = vntArr '...und fügt die  _
WERTE dann in der Liste ein.
L = L + UBound(vntArr)
End With
Next 'Dann weiter mit Blatt 2 und anhängen... Blatt 3 und so weiter.
End Sub
Hier noch eine Beispieldatei:
https://www.herber.de/bbs/user/96639.xlsm
Danke und Servus, Walter

2
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Zusammenfassung aller Blätter
25.03.2015 21:32:56
Daniel
Hi
das Problem ist dass du deine Schleife über alle Sheets der Mappe laufen lässt, auch düber das Blatt "Tabelle1" mit dem Button.
Dieses Blatt ist aber leer und damit ist der bei .Range("A1", .Cells(lz, lsp)) beschriebne Zellbereich genau eine Zelle gross (lz = 1, lsp = 1)
wenn du aber einer Variant-Variablen einen Zellbereich zuweist, der genau eine Zelle gross ist, entsteht kein Array, sondern eine einfache Wertvariable mit dem Zellinhalt.
Damit funktionieren dann die funktionen Ubound usw nicht mehr.
du müsstest also vorab prüfen, ob das zu bearbeitende Blatt leer ist, oder ob lz und lsp 1 sind, und dann die Bearbeitung dieses Blattes überspringen.
oder du prüfst mit: if VarType(vntArr) >= vbArray Then
ob ein Array oder eine einfache Wertvariable entstanden ist.
Gruß Daniel

Anzeige
Danke Daniel, mal schauen ob ich's hinbekomme.
25.03.2015 22:42:36
WalterK
Servus, Walter

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige