Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

richtige Syntax mit Cells(row,column) ...

Forumthread: richtige Syntax mit Cells(row,column) ...

richtige Syntax mit Cells(row,column) ...
25.08.2016 09:59:44
Alex
Hallo Excel-Gemeinde,
ich habe Syntax-Problem. ich möchte eine funktionierende Programmzeile durch Variablen flexibler gestalten. Aber es funktioniert nicht und ich komme nicht auf meinen Fehler.
Diese Zeile funktioniert in meinem Script, ist aber nicht flexibel:

Selection.AutoFill Destination:=Range("A2:T" & Zeilenanzahl - 1), Type:=xlFillDefault

Ich möchte die "Range" mit Variablen (die ich vorher ermittelt habe) gestalten.
Hier mein Versuch:
Selection.AutoFill Destination:=Range(Cells(2, 1), Cells(Zeilenanzahl-1, Spaltenanzahl)), Type:=xlFillDefault

um es zu vereinfachen, habe ich erst mal nur die Werte genommen. Aber wie gesagt, es klappt nicht.
Selection.AutoFill Destination:=Range(Cells(2, 1), Cells(10 - 1, 20)), Type:=xlFillDefault

Kann jemand helfen?
Anzeige

8
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: richtige Syntax mit Cells(row,column) ...
25.08.2016 10:42:12
JoWE
Hi Alex,
so vllt.:
Selection.AutoFill Destination:=Range("A2:T" & Cells(Rows.Count, 20).End(xlUp).Row), Type:=xlFillDefault
Gruß
Jochen
AW: richtige Syntax mit Cells(row,column) ...
25.08.2016 12:03:19
Alex
Hi Jochen,
danke für deinen Versuch. Klappt aber nicht.
Die Anzahl der Zeilen hatte ich schon "dynamisiert"
 Selection.AutoFill Destination:=Range("A2:T" & Zeilenanzahl - 1), Type:=xlFillDefault

Jetzt will ich aber auch die Spalten "dynamisieren", also "T"
Anzeige
AW: richtige Syntax mit Cells(row,column) ...
25.08.2016 12:40:28
Nepumuk
Hallo,
dein Problem ist das Objekt Selection. Gib da mal den richtigen Bereich an und zwar eine Zeile und genau so viele Spalten wie du die Zellen runterziehen willst.
Gruß
Nepumuk
AW: richtige Syntax mit Cells(row,column) ...
25.08.2016 13:22:17
Alex
meinst du so?
 Range(Cells(2, 1), Cells(10 - 1, 20)).AutoFill Destination:=Range(Cells(2, 1), Cells(10 - 1, 20)), Type:=xlFillDefault
funktioniert jedenfalls nicht.. :-(
Anzeige
AW: richtige Syntax mit Cells(row,column) ...
25.08.2016 14:40:33
Nepumuk
Hallo,
so hatte ich gemeint:
Range(Cells(2, 1), Cells(2, 20)).AutoFill Destination:=Range(Cells(2, 1), Cells(10 - 1, 20)), Type:=xlFillDefault

Gruß
Nepumuk
AW: richtige Syntax mit Cells(row,column) ...
25.08.2016 12:11:49
baschti007
Ich Würde sagen es fehlt der Worksheet Bezug auf die Cells
Gruß Basti

Dim Ws as Worksheet
Set Ws = Worksheets("Tabelle1")
Selection.AutoFill Destination:=Ws.Range(Ws.Cells(2, 1), Ws.Cells(10 - 1, 20)), Type:= _
xlFillDefault

Anzeige
AW: richtige Syntax mit Cells(row,column) ...
25.08.2016 13:23:25
Alex
Hi Basti,
klappt leider auch nicht.
AW: richtige Syntax mit Cells(row,column) ...
25.08.2016 14:04:08
Rudi
Hallo,
wo ist denn die Selection?
Range("A2:T2").AutoFill Destination:=Range(Cells(2, 1), Cells(Zeilenanzahl-1, Spaltenanzahl)), Type:=xlFillDefault
Gruß
Rudi
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige

Infobox / Tutorial

Richtiges Arbeiten mit Cells(row, column) in VBA


Schritt-für-Schritt-Anleitung

  1. Worksheet definieren: Beginne damit, dein Arbeitsblatt festzulegen, um sicherzustellen, dass alle Cells-Referenzen korrekt sind.

    Dim Ws As Worksheet
    Set Ws = Worksheets("Tabelle1")
  2. Zielbereich festlegen: Verwende die Cells(row, column)-Syntax, um die Start- und Endzelle für den Bereich zu definieren.

    Dim Zeilenanzahl As Long
    Dim Spaltenanzahl As Long
    Zeilenanzahl = 10 ' Beispielwert
    Spaltenanzahl = 20 ' Beispielwert
  3. AutoFill anwenden: Setze die AutoFill-Methode ein, um den gewünschten Bereich automatisch auszufüllen.

    Ws.Range(Ws.Cells(2, 1), Ws.Cells(Zeilenanzahl - 1, Spaltenanzahl)).AutoFill Destination:=Ws.Range(Ws.Cells(2, 1), Ws.Cells(Zeilenanzahl - 1, Spaltenanzahl)), Type:=xlFillDefault

Häufige Fehler und Lösungen

  • Fehler: Objekt 'Selection' nicht definiert: Stelle sicher, dass du ein korrektes Range-Objekt angibst und nicht einfach Selection verwendest. Lösung: Vermeide Selection und arbeite direkt mit Range oder Cells.

  • Fehler: Ungültige Zeilen- oder Spaltenreferenz: Prüfe, ob die Variablen Zeilenanzahl und Spaltenanzahl richtig gesetzt sind und keine negativen Werte annehmen.


Alternative Methoden

  • Direkte Range-Referenz: Anstatt Cells zu verwenden, kannst du auch direkt mit Range arbeiten, um den Bereich zu definieren:

    Range("A2:T" & Zeilenanzahl - 1).AutoFill
  • Verwendung von Variablen: Lagere die Zeilen- und Spaltenanzahl in Variablen aus, um die Flexibilität zu erhöhen:

    Dim startRow As Long, endRow As Long
    startRow = 2
    endRow = Zeilenanzahl - 1
    Range(Cells(startRow, 1), Cells(endRow, Spaltenanzahl)).AutoFill

Praktische Beispiele

  1. Einfaches AutoFill:

    Sub BeispielAutoFill()
       Dim Ws As Worksheet
       Set Ws = Worksheets("Tabelle1")
       Dim Zeilenanzahl As Long
       Zeilenanzahl = 10
       Ws.Range(Ws.Cells(2, 1), Ws.Cells(Zeilenanzahl, 1)).AutoFill Destination:=Ws.Range(Ws.Cells(2, 1), Ws.Cells(Zeilenanzahl, 20)), Type:=xlFillDefault
    End Sub
  2. Dynamisches AutoFill:

    Sub DynamischesAutoFill()
       Dim Ws As Worksheet
       Set Ws = Worksheets("Tabelle1")
       Dim Zeilenanzahl As Long
       Zeilenanzahl = Ws.Cells(Rows.Count, 1).End(xlUp).Row
       Dim Spaltenanzahl As Long
       Spaltenanzahl = 20
       Ws.Range(Ws.Cells(2, 1), Ws.Cells(Zeilenanzahl, Spaltenanzahl)).AutoFill Destination:=Ws.Range(Ws.Cells(2, 1), Ws.Cells(Zeilenanzahl, Spaltenanzahl)), Type:=xlFillDefault
    End Sub

Tipps für Profis

  • Referenzen optimieren: Verwende immer vollständige Referenzen mit Worksheet-Objekten, um Missverständnisse und Fehler zu vermeiden.
  • Fehlerbehandlung einfügen: Implementiere Fehlerbehandlungsroutinen, um unvorhergesehene Fehler abzufangen.
    On Error Resume Next
    ' Dein Code hier
    On Error GoTo 0

FAQ: Häufige Fragen

1. Wie arbeite ich mit mehreren Spalten?
Du kannst die Cells-Methode kombinieren, um mehrere Spalten zu adressieren, z.B. Range(Cells(2, 1), Cells(2, Spaltenanzahl)).

2. Was ist der Unterschied zwischen Cells und Range?
Cells verwendet numerische Indizes für Zeilen und Spalten, während Range Textreferenzen wie "A1" verwendet. Cells ist besonders nützlich in Schleifen oder dynamischen Szenarien.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige