Clever-Excel-Forum

Normale Version: VBA Tabelle Zusammenfassen, Fehlermeldung
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Hallo Ihr Lieben, 

Ich möchte anhand eines VBA- Codes das automatische Zusammenfassen mehrerer Tabellen erreichen. 
Habe dazu auch einen passenden Code in einem Youtube- Video gefunden.. 
Leider funktioniert dieser nicht, es erscheint folgende Fehlermeldung: 

Fehler:
Fehler beim Kompilieren.:
Eine Variable ist nicht definiert.

-Markiert ist dann "BereichZielTab =" nach Set in der sechsten CodeZeile

Wahrscheinlich ist also die Variable "BereichZielTab" nicht definiert? 
Ich weiß, es ist wahrscheinlich nur ein klitzekleiner Fehler, aber ich komme einfach nicht drauf. 

Vielleicht kann jmd helfen? Ich würde mich freuen  Blush
Code:
Sub Tabelle_Zusammenfassen()
Dim i As Integer
Dim Zusammenfassung As Worksheet
Set Zusammenfassung = Worksheets("Zusammenfassung")
For i = 2 To Worksheets.Count
Set BereichZielTab = Worksheets(i).UsedRange
Set LetzteZeileZusammenfassung = Worksheets(1).Cells(Rows.Count, "A").End(xlUp)(2)
BereichZielTab.Copy Destination:=LetzteZeileZusammenfassung
Next i


End Sub
Hallo,

Code:
Option Explicit

Sub Tabelle_Zusammenfassen()
    Dim i As Integer
    Dim Zusammenfassung As Worksheet
    Dim BereichZielTab As Range
    Set Zusammenfassung = Worksheets("Zusammenfassung")
    For i = 2 To Worksheets.Count
        Set BereichZielTab = Worksheets(i).UsedRange
        Set LetzteZeileZusammenfassung = Worksheets(1).Cells(Rows.Count, "A").End(xlUp)(2)
        BereichZielTab.Copy Destination:=LetzteZeileZusammenfassung
    Next i

siehe 4. Zeile (Dim BereichZielTab As Range). 
Danke!
Das hat schon mal funktioniert- Der Fehler ist behoben.

Jetzt wird allerding sder nächste angezeigt, und zwar in der 7. Zeile: 

Markiert ist: "LetzteZeileZusammenfassung"
wieder mit der Meldung "Fehler beim Kompilieren, Variable ist nicht definiert".

Muss "LetzteZeile" auch nochmal definiert werden am Anfang? und Wenn ja, wie?
.. habe es mit "Dim Letzte Zeile As long" versucht, aber das funktioniert nicht 

Huh
Hallo,

1. sind Leerzeichen in Variablennamen nicht zulässig
2. Dim(ensionierst) du eine Variable (bzw. versuchst das), deren Name ja mal gar nichts mit der Variablen im Code zu tun hat
3. ist das eine Variable vom Typ Range

Wenn, dann müsste das so aussehen:
Code:
Dim LetzteZeileZusammenfassung as Range
Zudem ist es meiner Meinung nach unnötig die UsedRange zunächst in eine Variable zu packen, du kannst auch gleich die UsedRange direkt kopieren.

Würde bei mir so aussehen:
Code:
Sub Tabelle_Zusammenfassen()
Dim i As Integer, Zusammenfassung As Worksheet

Set Zusammenfassung = Worksheets("Zusammenfassung")

With Zusammenfassung
    For i = 2 To Worksheets.Count
        loLetzte = .Cells(.Rows.Count, "A").End(xlUp).Offset(1).Row
        Worksheets(i).UsedRange.Copy .Cells(loLetzte, "A")
    Next i
End With

Set Zusammenfassung = Nothing
End Sub

Gruß Werner

Hallo,

jetzt habe ich doch tatsächlich selbst vergessen eine Variable zu deklarieren.

Außerdem kannst du dir auch sparen das Tabellenlatt in eine Variable zu schreiben, das kannst du auch direkt ansprechen.
Code:
Sub Tabelle_Zusammenfassen()
Dim i As Integer, loLetzte As Long

With Worksheets("Zusammenfassung")
    For i = 2 To Worksheets.Count
        loLetzte = .Cells(.Rows.Count, "A").End(xlUp).Offset(1).Row
        Worksheets(i).UsedRange.Copy .Cells(loLetzte, "A")
    Next i
End With

End Sub

Gruß Werner