Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Excel VBA - Variabler Autofill

Forumthread: Excel VBA - Variabler Autofill

Excel VBA - Variabler Autofill
25.01.2017 12:46:53
PS
Hallo zusammen,
Nach langem Suchen habe ich leider immer noch keine Lösung für mein Problem gefunden:
Ich habe ein Makro geschrieben, welches aus einem bestimmten Sheet sich Daten zieht und direkt unterhalb der letzten Zeile einfügt. Nun gibt es allerdings auch Formeln in der zu befüllenden Tabelle, welche einfach durch ein AutoFill sozusagen mit runtergezogen werden sollen.
Ich hab mal folgende VBA-Teile:
Sub Aktien()
LetzteZeile = Worksheets("Input").Cells(Rows.Count, 1).End(xlUp).Row
LetzteZeileA = Worksheets("Aktien").Cells(Rows.Count, 1).End(xlUp).Row
For x = 2 To LetzteZeile Step 1
Wert = Cells(x, 10).Value
Wert2 = Cells(x, 11).Value
If Wert = "EQUITIES" And Wert2 > 0 Then
Worksheets("Aktien").Cells(LetzteZeileA + 1, 1).EntireRow.Insert
Worksheets("Input").Cells(x, 3).Copy
Worksheets("Aktien").Select
NextRow = Cells(Rows.Count, 1).End(xlUp).Row + 1
Cells(NextRow, 2).Select
ActiveSheet.Paste
Worksheets("Input").Select
Cells(LetzteZeileA, 9).AutoFill Destination:=Range(Cells(LetzteZeileA, 9), Cells( _
LetzteZeileA + 1, 9))
End If
Next x
End Sub
Und hier funktioniert das Autofill nicht..
Jemand eine Idee?
Vielen Dank!
VG
PS
Anzeige

4
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Excel VBA - Variabler Autofill
25.01.2017 13:12:08
UweD
Hallo
ich vermute, du hast die Blätter nicht sauber verwendet.
Ist nämlich nichts angegeben, wird immer das Aktuelle verwendet.
Versuch das mal ... (wobei ich mir auch nicht ganz sicher bin, ob ich TbA und TbI überall richtig verwendet habe)
Sub Aktien()
    Dim TbI, TbA, LetzteZeileI As Long, LetzteZeileA As Long
    Dim x As Long, Wert, Wert2, 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 Step 1
        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
LG UweD
Anzeige
AW: Excel VBA - Variabler Autofill
25.01.2017 13:38:43
PS
Vielen Dank für die schnelle Antwort! Leider funktioniert auch die Formel nicht, irgendwie lässt sich die Formel nicht nach "unten ziehen" bzw Autofillen.. Bin mir aber auch gar nicht sicher ob das mit der For -- Next Bedingung überhaupt so funktionieren kann..
VG
PS
AW: Excel VBA - Variabler Autofill
25.01.2017 13:41:58
onur
Für Formeln solltest du statt autofill filldown nehmen.
Range(Cells(LetzteZeileA, 9), Cells(LetzteZeileA + 1, 9)).FillDown
Anzeige
AW: Excel VBA - Variabler Autofill
25.01.2017 13:51:49
PS
Perfekt! Danke, funktioniert einwandfrei!
VG
PS
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige
Anzeige
Anzeige

Infobox / Tutorial

Excel VBA - Variabler Autofill


Schritt-für-Schritt-Anleitung

  1. Makro erstellen: Öffne Excel und gehe zu Entwicklertools > Visual Basic, um den VBA-Editor zu starten.

  2. Neues Modul hinzufügen: Klicke mit der rechten Maustaste auf VBAProject (DeinWorkbook) und wähle Einfügen > Modul.

  3. 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
  4. 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.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige