Supportnet Computer
Planet of Tech

Supportnet / Forum / Tabellenkalkulation

letzte zeile ansteuern mit VBA





Frage

Hallo liebe Excel-Gemeinde, ich möchte mit einem Makro verschiedene Daten aus einzelnen Arbeitsmappen in eine andere Arbeitsmappe kopieren. Es soll dabei dann immer die erste freie Zeile angesprungen werden, da die bereits eingefügten Daten nicht überschrieben werden sollen. Die Forumsbeiträge hier dazu haben mir leider nicht wirklich weiter geholfen. Hier mal mein Makro: Sub Eintragen() Dim sTxt As String Dim rng As Range, rngCell As Range Dim i As Variant Application.ScreenUpdating = False i = 1 Set rng = Worksheets("Tabelle1").Range(Range("j1").Value) For i = 1 To Sheets("Tabelle2").UsedRange.Rows.Count sTxt = "´" & Sheets("Tabelle2").Range("B1").Value ´sTxt = sTxt & "[" & Range("b11").Value & "]" sTxt = sTxt & "[" & Sheets("Tabelle2").Cells(i, 1).Value & "]" sTxt = sTxt & Sheets("Tabelle2").Range("B3").Value & "´!" sTxt = sTxt & Sheets("Tabelle2").Range("c1").Value [b] rng.Cells(1).Formula = "=if(" & sTxt & "="""",""""," & sTxt & ")" rng.Cells(1).Copy rng rng.Value = rng.Value[/b] Next i Range("a1").Select Application.ScreenUpdating = True End Sub Die Daten werden soweit alle rüberkopiert (in Spalte A). Aber sie werden eben überschrieben. Ich denke, dass man an dem fett markierten Absatz was ändern muss (irgendwas mit end(xlup), schätz ich). Aber ich weiß nicht WIE. (Durch sTxt wird der Pfad definiert, wo die Arbeitsmappen zu finden sind, aus denen Daten herauskopiert werden.) Weiß jemand Rat? Merci;-) sassy

Antwort 1 von schnallgonz

Hi sassy,

ich verfüge leider nur über VBA- Halbwissen, Werte schrittweise untereinander einfügen habe ich aber schon in einigen Makros gebastelt.
Bei Deinem Set mg kommt bei mir schon ein Fehlerhinweis.
Mit
ActiveSheet.Cells.SpecialCells(xlCellTypeLastCell).Activate

findet man jedenfalls die letzte aktive Zelle.

Zum Thema letzte Zelle findest Du auch hier einiges:
https://supportnet.de/threads/203267

Den Auswahlbereich zeilenweise verschieben klappt mit
ActiveCell.Offset(Zeile, Spalte),
bei Dir hilft vielleicht auch Cells(i;0) also mit den ausgelesenen Zeilen auch im Zielbereich hochzählen, oder?
Vielleicht kannst Du mir Deinen fett markierten Absatz erläutern, vielleicht kommst Du auch jetzt schon weiter.
MfG
schnallgonz