Clever-Excel-Forum

Normale Version: VBA - Code
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Guten Morgen in die Runde,

ich habe mir einen VBA-Code aus dem Internet abgeschrieben um Werte von Tabelle1 in die Tabelle Kunden zu übertragen, beim Testen des Code's kommt allerdings die Meldung "Fehler beim Kompilieren, Variable nicht deklariert" .

Hier der Code:
Sub copy()
Sheets("Tabelle1").Select
lr = Cells.Find("*", Cells(1, 1), xlFormulas, xlPart, xlByRows, xlPrevious, False).Row
Range("A2:D" & lr).copy
Sheets("kunden").Select
lrTarget = Cells.Find("*", Cells(1, 1), xlFormulas, xlPart, xlByRows, xlPrevious, False).Row
Cells(lrTarget + 1, 1).Select
ActiveSheet.Paste
Columns("A:D").Autofit
Cells(1, 1).Select
End Sub

und dieser Teil ist markiert "lr =", da ich mich ein wenig an VBA herantaste und noch nicht verstehe, wie die Variable zu deklarieren ist, hier meine Frage: wie muss ich den Code schreiben, damit er läuft?
Wäre prima wenn mir jemand, der sich mit VBA auskennt, mal eben schreibt wie der sein muss und wo genau der eingefügt werden muss. Ich hab die Datei mit angehängt, der VBA Code im Modul ist auskommentiert.

Gruß der Jo
17
(19.03.2024, 09:16)johammer schrieb: [ -> ]ich habe mir einen VBA-Code aus dem Internet abgeschrieben

Moin!
Da sieht man mal, was für einen Schrott man im Internet finden kann.
Ich weiß gar nicht wo ich anfangen soll …
Vielleicht solltest Du eher damit anfangen, dich in die absoluten Grundlagen einzulesen.
https://www.online-excel.de/excel/grusel_vba.php?f=6
Zur Variablendeklaration:
https://learn.microsoft.com/de-de/office...-variables

Ich schreibe Dir den Code gleich mal so um, wie er mir sinnvoll erscheint.

Gruß Ralf

Mal eine Variante ohne Variablen:
PHP-Code:
Sub copy()
  Worksheets("Tabelle1").Cells(201).End(xlUp).Resize(14).copy _
    Worksheets
("kunden").Cells(201).End(xlUp).Offset(10)
  Worksheets("kunden").Columns("A:D").AutoFit
End Sub 
PHP-Code:
Sub M_snb()
  sheets(1).cells(1).currentregion.offset(1).resize(,4).copy sheets("kunden").Cells(rows.count, 1).End(xlUp).Offset(1)
End Sub  
2^20 ist aber kürzer als Rows.Count
21
(und komme mir nicht mit 20 Jahre alten Excel-Versionen)
2^20 <> robust. In 2 Monate wird rows.count 2^21 sein. 21
Hallo @RPP63 und @snb,  17

ich bedanke mich für eure schnellen Antworten.
Beide Code's sind ok. Super.  05

Ja, RPP63 ist richtig, man sollte sich informieren wenn man mit VBA anfängt.
Wenn man aber, so wie ich kein Englisch kann, ist das nicht so einfach sich in die Materie reinzudenken.
Überwiegend beschränke ich mich auf den Makrorekorder.
Wenn ich dann schonmal sowas entdecke, wie diesen VBA -Code aus dem Internet, dann möchte ich das auf meine Tabelle mal anwenden.  17.

Naja, es klappt auf jeden Fall so wie ich mir das gedacht habe.

Herzlichen Dank

Gruß der Jo 100
Moin Jo!
Ich habe ja auch nicht Dich kritisiert, sondern den Verfasser des Codes aus der Threaderöffnung.
Selbst ich verwende auch heute noch ab und an den Rekorder.

Die beiden Codes funktionieren allerdings unterschiedlich:
snbs kopiert alles ab Zeile 2,
meiner nur die letzte Zeile.

Gruß Ralf
Zitat:Selbst ich

Tu quoque, Brute ?   21
Jawohl, Caesar!
Du weißt ja, wie das ausging.  21