Dieses Forum nutzt Cookies
Dieses Forum verwendet Cookies, um deine Login-Informationen zu speichern, wenn du registriert bist, und deinen letzten Besuch, wenn du es nicht bist. Cookies sind kleine Textdokumente, die auf deinem Computer gespeichert werden. Die von diesem Forum gesetzten Cookies werden nur auf dieser Website verwendet und stellen kein Sicherheitsrisiko dar. Cookies aus diesem Forum speichern auch die spezifischen Themen, die du gelesen hast und wann du zum letzten Mal gelesen hast. Bitte bestätige, ob du diese Cookies akzeptierst oder ablehnst.

Ein Cookie wird in deinem Browser unabhängig von der Wahl gespeichert, um zu verhindern, dass dir diese Frage erneut gestellt wird. Du kannst deine Cookie-Einstellungen jederzeit über den Link in der Fußzeile ändern.

VBA Tabelle Zusammenfassen, Fehlermeldung
#1
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
Antworten Top
#2
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). 
Viele Grüße
Klaus-Dieter
Der Erfolg hat viele Väter, 
der Misserfolg ist ein Waisenkind
Richard Cobden
Antworten Top
#3
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
Antworten Top
#4
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
[-] Folgende(r) 1 Nutzer sagt Danke an Werner.M für diesen Beitrag:
  • luflee66
Antworten Top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste