Excel VBA - Variabler Autofill
Schritt-für-Schritt-Anleitung
-
Makro erstellen: Öffne Excel und gehe zu Entwicklertools
> Visual Basic
, um den VBA-Editor zu starten.
-
Neues Modul hinzufügen: Klicke mit der rechten Maustaste auf VBAProject (DeinWorkbook)
und wähle Einfügen
> Modul
.
-
Code einfügen: Füge den folgenden VBA-Code in das Modul ein:
Sub Aktien()
Dim TbI As Worksheet, TbA As Worksheet
Dim LetzteZeileI As Long, LetzteZeileA As Long
Dim x As Long, Wert As Variant, Wert2 As Variant, NextRow As Long
Set TbI = Worksheets("Input")
Set TbA = Worksheets("Aktien")
LetzteZeileI = TbI.Cells(TbI.Rows.Count, 1).End(xlUp).Row
LetzteZeileA = TbA.Cells(TbA.Rows.Count, 1).End(xlUp).Row
For x = 2 To LetzteZeileI
Wert = TbI.Cells(x, 10).Value
Wert2 = TbI.Cells(x, 11).Value
If Wert = "EQUITIES" And Wert2 > 0 Then
TbA.Cells(LetzteZeileA + 1, 1).EntireRow.Insert
NextRow = TbA.Cells(TbA.Rows.Count, 1).End(xlUp).Row + 1
TbI.Cells(x, 3).Copy Destination:=TbA.Cells(NextRow, 2)
TbA.Cells(LetzteZeileA, 9).AutoFill _
Destination:=TbA.Range(TbA.Cells(LetzteZeileA, 9), TbA.Cells(LetzteZeileA + 1, 9))
End If
Next x
End Sub
-
Makro ausführen: Schließe den VBA-Editor und kehre zu Excel zurück. Führe das Makro über Entwicklertools
> Makros
aus.
Häufige Fehler und Lösungen
- Fehler beim Autofill: Wenn das Autofill nicht funktioniert, stelle sicher, dass Du die korrekten Arbeitsblätter verwendest. Der vorherige Code verwendet die Variablen
TbI
und TbA
für die jeweiligen Blätter.
-
Formeln werden nicht korrekt kopiert: Wenn Du Formeln hast, die nicht richtig nach unten gezogen werden, benutze stattdessen FillDown
:
TbA.Range(TbA.Cells(LetzteZeileA, 9), TbA.Cells(LetzteZeileA + 1, 9)).FillDown
Alternative Methoden
Wenn das klassische autofill
nicht das gewünschte Ergebnis liefert, kannst Du die Methode FillDown
verwenden. Dies ist besonders nützlich, wenn Du mit Formeln arbeitest.
Range(Cells(LetzteZeileA, 9), Cells(LetzteZeileA + 1, 9)).FillDown
Diese Methode sorgt dafür, dass die Formeln in der angegebenen Range korrekt nach unten gezogen werden.
Praktische Beispiele
Hier ist ein einfaches Beispiel, um das Verständnis für autofill vba
zu fördern:
Sub BeispielAutofill()
Dim ws As Worksheet
Set ws = ThisWorkbook.Sheets("Daten")
' Autofill im Bereich A1:A10
ws.Range("A1").Value = 1
ws.Range("A1").AutoFill Destination:=ws.Range("A1:A10")
End Sub
In diesem Beispiel wird der Wert 1
in die Zelle A1 eingefügt und dann mithilfe von AutoFill
auf die Zellen A1 bis A10 ausgeweitet.
Tipps für Profis
-
Nutze Selection.AutoFill
für dynamische Bereiche. Damit kannst Du flexibel mit Auswahlbereichen arbeiten.
Selection.AutoFill Destination:=Range("A1:A" & LastRow)
-
Überprüfe immer, ob die Zielzelle für das Autofill nicht leer ist, um unnötige Fehler zu vermeiden.
FAQ: Häufige Fragen
1. Wie kann ich sicherstellen, dass der Autofill-Bereich immer korrekt ist?
Verwende dynamische Zuweisungen, um den letzten gefüllten Bereich zu ermitteln. Dies kann durch End(xlUp)
realisiert werden.
2. Was ist der Unterschied zwischen AutoFill
und FillDown
?
AutoFill
wird verwendet, um Muster zu erkennen und diese zu erweitern, während FillDown
einfach den Inhalt einer Zelle in den darunterliegenden Zellen kopiert.