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

AutoFill mit variablem Bereich

Forumthread: AutoFill mit variablem Bereich

AutoFill mit variablem Bereich
15.10.2003 13:33:58
Tobias
Hallo,

Ich möchte eine im Feld E5 stehende Formel mit Hilfe eines Makros nach unten bis in die letzte Zeile meiner Tabelle ziehen. Dabei ist die Zeilenanzahl variabel.

Folgender Code zieht die Formel bis in Zeile 100:

Selection.AutoFill Destination:=Range("E5:E100"), Type:=xlFillDefault

Der Teil "E100" muss nun variabel gestaltet werden.

Mit COUNT(C[-1]) bekomme ich die Anzahl der Zahlen, die links neben der derzeit aktivierten Spalte stehen. Wenn ich zu dieser Zahl 4 summiere hätte ich die jeweils gewünschte Zeilennummer.

Wie kann ich also den Range variabel definieren.

Gruss Tobias
Anzeige

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

Betreff
Datum
Anwender
Anzeige
AW: AutoFill mit variablem Bereich
15.10.2003 13:39:15
xXx
Hallo,
du hast es doch schon fast!
Selection.AutoFill Destination:=Range("E5:E" &count(C[-1])+4)
Besser: =Range(cells(5,5),cells(count(c[-1])+4,5))
Select ist in 99% der Fälle in VBA nicht nötigt und verlangsamt nur den Code.

Gruß aus'm Pott
Udo
http://www.excelerator.de

P.S. Das Forum lebt auch von den Rückmeldungen der Frager an die Antworter!
Anzeige
AW: AutoFill mit variablem Bereich
15.10.2003 14:23:10
Tobias
Hallo nochmal und schonmal danke,

es gibt jedoch noch ein problem.

wenn ich

Selection.AutoFill Destination:=Range("E5:E" &count(C[-1])+4)

oder

Selection.AutoFill Destination:=Range(cells(5,5),cells(count(c[-1])+4,5))

angebe, bekomme ich folgende Fehlermeldung:

Fehler beim Kompilieren:
Erwartet: Listentrennzeichen oder )

wobei im Editor der Bereich [-1] markiert ist.

Wo könnte der Fehler liegen??

Gruss Tobias
Anzeige
AW: AutoFill mit variablem Bereich
15.10.2003 16:04:31
xXx
Hallo,
machs so:
z=Range("D5").end(xldown).row
Selection.AutoFill Destination:=Range(cells(5,5),cells(z,5))


Gruß aus'm Pott
Udo
http://www.excelerator.de

P.S. Das Forum lebt auch von den Rückmeldungen der Frager an die Antworter!
Anzeige
AW: AutoFill mit variablem Bereich
16.10.2003 12:12:11
Tobias
funktioniert perfekt

vielen Dank nochmals

grus tt
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Entdecke relevante Threads

Schau dir verwandte Threads basierend auf dem aktuellen Thema an

Alle relevanten Threads mit Inhaltsvorschau entdecken
Anzeige

Infobox / Tutorial

AutoFill mit variablem Bereich in Excel VBA


Schritt-für-Schritt-Anleitung

Um eine Formel in Excel mit VBA automatisch nach unten zu ziehen, bis zur letzten Zeile, kannst Du die folgenden Schritte befolgen:

  1. Öffne den VBA-Editor: Drücke ALT + F11, um den VBA-Editor zu öffnen.

  2. Füge ein neues Modul hinzu: Klicke auf Einfügen > Modul.

  3. Gebe den folgenden Code ein:

    Sub AutoFillDynamicRange()
       Dim z As Long
       z = Range("D5").End(xlDown).Row ' Bestimme die letzte Zeile
       Range("E5").AutoFill Destination:=Range("E5:E" & z), Type:=xlFillDefault
    End Sub

    In diesem Code wird die letzte Zeile ermittelt und die Formel in Zelle E5 wird bis zur letzten Zeile kopiert.

  4. Führe das Makro aus: Drücke F5, um das Makro laufen zu lassen.


Häufige Fehler und Lösungen

  • Fehlermeldung: „Erwartet: Listentrennzeichen oder )“

    • Lösung: Überprüfe, ob Du alle Klammern und Anführungszeichen korrekt gesetzt hast. In den Beispielen im Thread wurde count(C[-1]) verwendet, was möglicherweise nicht korrekt ist. Stattdessen kannst Du Count(Range("C:C")) verwenden.
  • Fehlermeldung: „Fehler beim Kompilieren“

    • Lösung: Stelle sicher, dass Du die richtigen Zellreferenzen verwendest. Eine falsche Referenz kann zu einem Kompilierungsfehler führen.

Alternative Methoden

Falls Du eine alternative Methode zum Autofill benötigst, kannst Du die Cells-Methode verwenden, um eine dynamische Range zu definieren:

Sub AutoFillWithCells()
    Dim lastRow As Long
    lastRow = Range("D5").End(xlDown).Row
    Range(Cells(5, 5), Cells(lastRow, 5)).FillDown
End Sub

Hier wird die Autofill-Range durch die Cells-Methode definiert, was eine flexible Handhabung ermöglicht.


Praktische Beispiele

Beispiel 1: Autofill einer Formel in Spalte E, die in Zelle E5 steht:

Sub FillFormulaToLastRow()
    Dim lastRow As Long
    lastRow = Range("D5").End(xlDown).Row
    Range("E5").AutoFill Destination:=Range("E5:E" & lastRow)
End Sub

Beispiel 2: Verwendung der Selection-Methode:

Sub SelectionAutoFill()
    Dim lastRow As Long
    lastRow = Range("D5").End(xlDown).Row
    Selection.AutoFill Destination:=Range("E5:E" & lastRow), Type:=xlFillDefault
End Sub

Tipps für Profis

  • Vermeide die Verwendung von Select: Die Verwendung von Select in VBA kann den Code verlangsamen. Stattdessen solltest Du direkt auf die Objekte zugreifen.
  • Verwende xlDown effektiv: Mit Range("D5").End(xlDown).Row kannst Du schnell die letzte Zeile finden, was besonders nützlich ist bei variablen Datenmengen.
  • Nutze Kommentare: Vergiss nicht, Deinen Code zu kommentieren, um die Lesbarkeit zu verbessern.

FAQ: Häufige Fragen

1. Wie kann ich die Autofill-Funktion auf mehrere Spalten anwenden?
Du kannst den Code anpassen, um mehrere Spalten zu autofüllen, indem Du die Zielrange entsprechend erweiterst.

2. Funktioniert dieser Code in allen Excel-Versionen?
Ja, der bereitgestellte Code sollte in den meisten modernen Excel-Versionen, die VBA unterstützen, funktionieren.

3. Was mache ich, wenn mein Datenbereich nicht zusammenhängend ist?
In diesem Fall musst Du möglicherweise eine Schleife verwenden, um durch die nicht zusammenhängenden Bereiche zu iterieren und die Autofill-Funktion entsprechend anzuwenden.

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