Live-Forum - Die aktuellen Beiträge
Datum
Titel
03.10.2025 22:18:19
03.10.2025 18:57:58
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: VBA variabler Zellbezug

VBA variabler Zellbezug
jojo
Hallo,
ich habe folgendes Problem.
Schritt 1: Ermittlung der nicht leeren Zellen + Faktor
Schritt 2: kopieren einer Formel gemäß der aus Schritt 1 ermittelten länge
Sub Kopieren_TEST()
Dim i As Integer
Dim leer As Integer
leer = 0
For i = 1 To 100
If Worksheets("Eingabeblatt").Cells(i, 3).Text = "" Then leer = leer + 1
If leer > 5 Then Exit For
Debug.Print i
Debug.Print leer
Next i
' bis zu diesem Schritt läuft das Makro wie ich es mir vorstelle, wie bekomme ich jetzt über  _
'eine for-Schleife '(2 bis zeilenlänge), oder über Range den Wert aus Cells(2,1) in die  _
entsprechenden 'Zelle (b2 bis b ' 'zeilenlänge kopiert?
Cells(2, 1).Copy
For zeilenlänge = 2 To i
Debug.Print zeilenlänge
Range(2, zeilenlänge).Paste
Next zeilenlänge
'Range("B2:Cells(2, 1).FormulaR1C1 = "=R[-1]C+i").Select
'ActiveSheet.Paste
End Sub

Da ich VBA-Anfänger bin, und diese Frage bestimmt Peanuts ist, wäre ich schon mit einem Link mit ähnlichem Sachverhalt sehr zufrieden.
DANKE
Anzeige

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

Betreff
Benutzer
Anzeige
AW: VBA variabler Zellbezug
23.11.2010 19:07:18
Rudi
Hallo,
1. Du willst also die unterste nicht leere Zelle in C +5?
i=cells(rows.count,3).end(xlup).row+5
2. und dann A2 entsprechend nach B kopieren?
Cells(2,1).copy Range(Cells(2, 2), Cells(i, 2))
Gruß
Rudi
AW: VBA variabler Zellbezug
23.11.2010 19:23:52
jojo
Danke Rudi, funktioniert, kann dann weiter basteln :-)
AW: VBA variabler Zellbezug
23.11.2010 19:34:16
jojo
Danke Rudi, funktioniert, kann dann weiter basteln :-)
Anzeige
AW: VBA variabler Zellbezug
23.11.2010 19:41:19
ing.grohn
Hallo Jojo,
wenn Du den Inhalt der Zelle A2 in die Zellen B2 - B sagen wir mal 5 schreiben willst,
schreibst Du:
For I = 2 to 5
Cells(I,2).Value= Cells(2,1).Value
Next I

Du kannst statt Cells auch Range benutzen:
Range("B" & I).Value=Range("A2").Value

Folgendes hat mir der Makrorecorder aufgezeichnet:
Range("A2").Select
Selection.Copy
Range("B2:B5").Select
ActiveSheet.Paste

Allerdings ist das Selektieren nicht gerne gesehen!
Mit freundlichen Grüßen
Albrecht
Anzeige
;
Anzeige
Anzeige

Infobox / Tutorial

VBA für variablen Zellbezug in Excel


Schritt-für-Schritt-Anleitung

Um einen variablen Zellbezug in Excel mit VBA zu erstellen, folge diesen Schritten:

  1. Öffne Excel und drücke ALT + F11, um den VBA-Editor zu starten.
  2. Füge ein neues Modul hinzu (Einfügen > Modul).
  3. Kopiere den folgenden VBA-Code in das Modul:
Sub Kopieren_TEST()
    Dim i As Integer
    Dim leer As Integer
    Dim zeilenlänge As Integer
    leer = 0

    ' Ermittlung der nicht leeren Zellen
    For i = 1 To 100
        If Worksheets("Eingabeblatt").Cells(i, 3).Text = "" Then 
            leer = leer + 1
        If leer > 5 Then Exit For
        Next i

    ' Kopieren der Zelle A2 in die entsprechenden Zellen in Spalte B
    Cells(2, 1).Copy
    For zeilenlänge = 2 To i
        Range(Cells(zeilenlänge, 2)).PasteSpecial Paste:=xlPasteAll
    Next zeilenlänge
End Sub
  1. Schließe den VBA-Editor und kehre zu Excel zurück.
  2. Führe das Makro aus (Entwicklertools > Makros > Kopieren_TEST > Ausführen).

Häufige Fehler und Lösungen

  • Fehler: Typen unverträglich

    • Lösung: Stelle sicher, dass alle Variablen korrekt deklariert sind. Überprüfe die Datentypen.
  • Fehler: Zellen werden nicht korrekt kopiert.

    • Lösung: Achte darauf, dass der Zellbezug in der Range-Funktion richtig formuliert ist. Verwende Range(Cells(zeilenlänge, 2)).PasteSpecial anstelle von Range(2, zeilenlänge).Paste.

Alternative Methoden

Neben VBA gibt es auch andere Möglichkeiten, variablen Zellbezüge zu erstellen:

  1. Formeln: Du kannst Excel-Formeln nutzen, um Werte aus einer Zelle in eine andere zu kopieren. Zum Beispiel:

    =A2

    in Zelle B2 und diese Formel nach unten ziehen.

  2. Makrorecorder: Du kannst den Makrorecorder verwenden, um Aktionen aufzuzeichnen. Achte jedoch darauf, dass die generierten Codes manchmal unnötige Selektionsschritte enthalten.


Praktische Beispiele

Hier sind einige praktische Beispiele für Excel Zellbezüge:

  • Kopieren eines Wertes in einen Bereich:

    For I = 2 To 5
      Cells(I, 2).Value = Cells(2, 1).Value
    Next I
  • Verwendung von Range:

    Range("B" & I).Value = Range("A2").Value

Beide Beispiele zeigen, wie du excel zellbezug variabel nutzen kannst, um Werte dynamisch zu kopieren.


Tipps für Profis

  • Nutze die With ... End With-Struktur, um den Code zu optimieren und die Lesbarkeit zu erhöhen.

  • Ersetze die Verwendung von Select und Selection durch direkte Zellreferenzen, um die Leistung zu verbessern.

  • Verwende Option Explicit am Anfang deines Moduls, um sicherzustellen, dass alle Variablen deklariert werden, was Fehler vermeidet.


FAQ: Häufige Fragen

1. Wie kann ich den letzten nicht leeren Zellbezug in einer Spalte finden?
Du kannst den folgenden Code verwenden:

i = Cells(Rows.Count, 3).End(xlUp).Row

2. Was ist der Unterschied zwischen Cells und Range?
Cells verwendet numerische Indizes (Zeile, Spalte), während Range mit Adressformaten (z.B. "A1") arbeitet. Beide können jedoch für vba zellbezug verwendet werden.

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