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

VBA Zelle dynamisch ansprechen und indirekt nutzen

Forumthread: VBA Zelle dynamisch ansprechen und indirekt nutzen

VBA Zelle dynamisch ansprechen und indirekt nutzen
07.04.2019 16:55:27
Kathi
Hallo liebe Forumsgemeinschaft
Leider kenne ich mich mit VBA nicht aus, komme aber bei meinem aktuellen Projekt nicht drum rum. Bisher konnte ich mir vieles aus dem Internet zusammensuchen. Ein Problem bleibt jedoch bestehen.
Ich möchte gerne eine Zelle indirekt nutzen. Z.B. M3. Ich weiß, dass ich hierzu Range(Range("M3")) eingeben müsste. Aber die Formel steht nicht immer in M3 sondern kann auch in O3,P3 oder K3 stehen. Die Spalte variiert also, je nachdem was ich vorher mit der Tabelle anstelle. Das Gute ist, dass die Zelle immer zwei Zeilen unterhalb und drei Spalten vor der gerade aktiven Zelle steht. also mit Offset: ActiveCell.Offset(-2,-3). Glaube ich zumindest. Ich hab schon ganz banal versucht, M3 durch dieses Offset zu ersetzen. Klappt aber nicht.
Könnte mir jemand einen passenden Code nennen?
LG
Kathi
Anzeige

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

Betreff
Datum
Anwender
Anzeige
AW: VBA Zelle dynamisch ansprechen und indirekt nutzen
07.04.2019 16:57:59
Hajo_Zi
Hallo Kathi,
nicht Range(Range("M3"))
sonnden Range("M3")
ActiveCell.Offset(2,3)

Beiträge von Werner, Luc, robert, J.O.Maximo und folgende lese ich nicht.
Die Beiträge werden auch ignoriert, es erfolgt keine Antwort.
AW: VBA Zelle dynamisch ansprechen und indirekt nutzen
07.04.2019 16:58:28
cysu11
Hi Kathi,
wenn dann so: ActiveCell.Offset(2,-3)
Lade doch bitte deine Beispieldatei hoch, damit wir besser verstehen was du vorhast!
LG
Alexandra
Anzeige
AW: VBA Zelle dynamisch ansprechen und indirekt nutzen
07.04.2019 18:00:47
Nepumuk
Hallo Kathi,
du musst die Value-Eigenschaft angeben, ansonsten wird der Range in der Klammer als Objekt angesehen. Also:
Range(ActiveCell.Offset(-2,-3).Value)...

Gruß
Nepumuk
AW: VBA Zelle dynamisch ansprechen und indirekt nutzen
08.04.2019 07:29:10
Kathi
Spitze!
Vielen lieben Dank euch Drei!
Jede Antwort ein Treffer und vor allem so schnell.
Was für ein blöder Fehler mit der -2.
Na, jetzt hab ich es aber hin bekommen mit:
Range(ActiveCell.Offset(2;-3).Value)
Danke!
Anzeige
;
Anzeige
Anzeige

Infobox / Tutorial

Dynamisches Ansprechen von Zellen in VBA


Schritt-für-Schritt-Anleitung

  1. Aktuelle Zelle bestimmen: Verwende ActiveCell, um die aktuell aktive Zelle zu identifizieren.

  2. Offset verwenden: Um auf die Zelle zuzugreifen, die zwei Zeilen unterhalb und drei Spalten links von der aktiven Zelle ist, nutze ActiveCell.Offset(-2, -3).

  3. Wert der Zelle abrufen: Um den Wert der Zielzelle zu verwenden, musst du die Value-Eigenschaft angeben. Der korrekte Code sieht wie folgt aus:

    Dim ZielWert As Variant
    ZielWert = Range(ActiveCell.Offset(-2, -3).Value)
  4. Verwendung in Funktionen: Du kannst diesen Wert jetzt in anderen Funktionen oder Berechnungen in deinem VBA-Skript verwenden.


Häufige Fehler und Lösungen

  • Falsches Offset: Wenn du ein falsches Offset angibst, wie z.B. ActiveCell.Offset(2, 3), wird der falsche Zellwert abgerufen. Stelle sicher, dass du das richtige Offset verwendest: ActiveCell.Offset(-2, -3).
  • Value-Eigenschaft nicht angegeben: Wenn du versuchst, den Wert einer Zelle ohne die Value-Eigenschaft zu verwenden, wird ein Fehler angezeigt. Verwende immer Range(ActiveCell.Offset(-2, -3).Value).

Alternative Methoden

Falls du nicht mit ActiveCell arbeiten möchtest, kannst du auch spezifische Zellreferenzen oder benannte Bereiche nutzen. Eine andere Möglichkeit ist die Verwendung von Schleifen, um dynamisch durch Zellen zu navigieren.

Dim i As Integer
For i = 1 To 10
    Cells(i, 1).Value = "Wert " & i
Next i

Diese Methode ist nützlich, wenn du mehrere Zellen gleichzeitig ansprechen oder befüllen möchtest.


Praktische Beispiele

Hier ist ein Beispiel, wie du die beschriebenen Methoden in einem praktischen Szenario verwenden kannst:

Sub BeispielVBA()
    Dim ZielWert As Variant
    ' Aktuelle Zelle verwenden
    ZielWert = Range(ActiveCell.Offset(-2, -3).Value)

    ' Ausgabe des Wertes in einer MessageBox
    MsgBox "Der Wert der Zelle ist: " & ZielWert
End Sub

In diesem Beispiel wird der Wert der Zelle, die gemäß der Offset-Anweisung angesprochen wird, in einer MessageBox angezeigt.


Tipps für Profis

  • Fehlerbehandlung: Implementiere Fehlerbehandlungsroutinen, um mit unerwarteten Situationen umzugehen, z.B. wenn die aktive Zelle am Rand des Blattes ist.
  • Verwende benannte Bereiche: Wenn du häufig auf bestimmte Zellen zugreifst, kann es hilfreich sein, diese als benannte Bereiche zu definieren.
  • Dokumentation des Codes: Kommentiere deinen Code gut, um später einfacher darauf zurückgreifen zu können.

FAQ: Häufige Fragen

1. Wie kann ich sicherstellen, dass ich die richtige Zelle anspreche?
Verwende Debug.Print oder MsgBox, um den Wert der Zielzelle während der Entwicklung anzuzeigen.

2. Was ist der Unterschied zwischen Range und Cells in VBA?
Range ermöglicht es dir, Zellen durch Namen oder Adresse anzusprechen, während Cells auf Zellen durch ihre Zeilen- und Spaltenindizes zugreift, z.B. Cells(1, 1) für A1.

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