wie kann ich in VBA einen code erstellen, wobei erkannt die leztzte zeile erkannt wird, in welcher daten stehen und einen wert immer in die darunter schreibt?
Danke
Sub letzteZeile ()
dim lZeile as integer
lZeile=activecell.specialcells(xlCelltypeLastCell).row+1
cells(LZeile,1) = "hier war Ende"
End Sub
Sub letzteZeile ()
dim lZeile as integer
if cells(1,1)="1" then
lZeile=activecell.specialcells(xlCelltypeLastCell).row+1
cells(LZeile,1) = cells(1,1)
end if
End Sub
Sub ErsteFreieA()
Dim s As String
Dim i As Long
With ActiveSheet
i = 8
Do
i = i + 1
s = Cells(i, "A")
If Len(s) = 0 Then
Cells(i, "A").Activate
Exit Do
End If
Loop While i < 65535
End With
End Sub
Sub ErsteFreieA()
Dim s As String ' string?
Dim i As Long ' long?
With ActiveSheet
i = 8 ' was ist 8?
Do
i = i + 1
s = Cells(i, "A")
If Len(s) = 0 Then ' was ist len
Cells(i, "A").Activate
Exit Do
End If
Loop While i < 65535 ' ?????
End With
End Sub
Öffne den Visual Basic for Applications (VBA) Editor:
ALT + F11
, um den VBA-Editor in Excel zu öffnen.Füge ein neues Modul hinzu:
Einfügen
und wähle Modul
.Kopiere und füge den folgenden Code ein:
Sub letzteZeile()
Dim lZeile As Long
lZeile = Cells(Rows.Count, 1).End(xlUp).Row + 1
Cells(lZeile, 1) = "Hier ist der neue Wert"
End Sub
Führe das Makro aus:
ALT + F8
, wähle letzteZeile
aus und klicke auf Ausführen
.Mit diesem VBA-Skript wird der Wert in die erste freie Zelle unterhalb der letzten gefüllten Zelle in Spalte A geschrieben.
Fehler: "Laufzeitfehler 1004":
Lösung: Überprüfe, ob in der Spalte A tatsächlich Daten vorhanden sind.
Formelbasierte Lösung:
=VERGLEICH(MAX(A:A);A:A;0)
verwenden, um die letzte Zeile mit Daten zu finden und dann mit INDIREKT
den Wert in die nächste Zeile zu setzen.Excel-Tabellen:
Tabelle1[#Alle]
nutzen, um automatisch die letzte Zeile zu bestimmen.Beispiel 1: Füge einen Wert aus einer anderen Zelle hinzu.
Sub WertHinzufuegen()
Dim lZeile As Long
If Cells(1, 1).Value = 1 Then
lZeile = Cells(Rows.Count, 1).End(xlUp).Row + 1
Cells(lZeile, 1).Value = Cells(1, 1).Value
End If
End Sub
Beispiel 2: Suche nach der ersten freien Zelle ab Zeile 8.
Sub ErsteFreieA()
Dim s As String
Dim i As Long
With ActiveSheet
i = 8
Do
i = i + 1
s = Cells(i, "A").Value
If Len(s) = 0 Then
Cells(i, "A").Activate
Exit Do
End If
Loop While i < 65535
End With
End Sub
Verwende Long
anstelle von Integer
: In VBA ist Long
besser geeignet, um Zeilen zu speichern, da Integer
nur bis 32.767 zählt und Excel mehr Zeilen hat.
Optimierung durch With
-Anweisungen: Reduziere die Anzahl der Berechnungen, indem du With
-Anweisungen verwendest, um mehrfaches Ansprechen des gleichen Objekts zu vermeiden.
1. Wie finde ich die letzte Zeile einer anderen Spalte?
Um die letzte Zeile einer anderen Spalte zu finden, ändere den Index in Cells(Rows.Count, 2).End(xlUp).Row
, wobei 2
für Spalte B steht.
2. Was mache ich, wenn ich mehrere Werte in einer Zeile speichern möchte?
Du kannst mehrere Zellen in einer Zeile befüllen, indem du die Zelle entsprechend anpasst, z.B. Cells(lZeile, 2).Value = "Neuer Wert"
für die zweite Spalte.
Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden
Suche nach den besten AntwortenEntdecke unsere meistgeklickten Beiträge in der Google Suche
Top 100 Threads jetzt ansehen