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

Forumthread: VBA: Wert einer Zelle mithilfe des Namens auslesen

VBA: Wert einer Zelle mithilfe des Namens auslesen
13.08.2014 15:31:01
Jan
Hi,
ich habe einer kompletten Spalte einen Namen gegeben und möchte jetzt im VBA-Editor auf diese Spalte bzw. diesen Namen zugreifen. Das geht meines Wissens mit Range("EigenerName").
Wie erhalte ich jetzt einen Wert einer Zelle aus "EigenerName"?
Sinngemäß anstelle von Range("A3") eher Range("EigenerName3") (ist natürlich Quatsch, aber vllt. versteht mich jemand dadurch besser.
Über Feedback würde ich mich freuen.
Vielen Dank,
Jan

Anzeige

16
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: VBA: Wert einer Zelle mithilfe des Namens auslesen
13.08.2014 15:39:11
Daniel
Hi
Range("EigenerName").Cells(1, 1).Value

damit greifst du auf die Zelle in der ersten Zeile und ersten Spalte dieses Zellbereichs zu.
Aufpassen, es findet keine Logik-Kontrolle statt.
dh wenn du "EigenerName" den Zellbereich J:J zugewiesen hast, wäre ein
Range("EigenerName").Cells(1, 2).value
trotzdem möglich, in diesem Fall würde dann auf die Spalte K zugegriffen, obwohl diese gar nicht zu "EigenerName" gehört.

Anzeige
AW: VBA: Wert einer Zelle mithilfe des Namens auslesen
13.08.2014 15:43:12
Matze
Hallo Jan,
mit Range("A3").value würdest du diese Zelle DIREKT ansprechen.
Das selbe erreichst du mit Cells(3, 1).value
Der Bereichsname fürs direkte ansprechen ist da nicht nötig.
Wenn du aber alle Zellen in diesen Bereich ansprechen möchtest, wird eine For-Schleife nötig.
Dim Zelle as Long
for each Zelle in Range("EigenerName")
usw
Gruß Matze

Anzeige
AW: VBA: Wert einer Zelle mithilfe des Namens auslesen
13.08.2014 15:58:53
Jan
Hi Matze,
an sich stimmt das. Also es stimmt, ja :-) Aber ich möchte vermeiden, dass ich beim Einfügen neuer Spalten im Arbeitsblatt dann im VBA-Code per Hand alles nachrücken muss. Verstehst Du, was ich damit meine? Oder ich habe einen Denkfehler :-)

AW: VBA: Wert einer Zelle mithilfe des Namens auslesen
13.08.2014 15:56:55
Jan
Hi Daniel,
zum Verständnis: .Cells() bezieht sich dann also relativ auf die Range("EigenerName")?
Jan

Anzeige
AW: VBA: Wert einer Zelle mithilfe des Namens auslesen
13.08.2014 16:01:31
Daniel
ja, wenn Das .Cells auf Range folgt, dann sind die Koordinaten in Cells bezugen auf den Zellbereich der Range.
Range(...).Cells(1, 1) ist also die linke obere Zelle der Range.
Gruß Daniel

AW: VBA: Wert einer Zelle mithilfe des Namens auslesen
13.08.2014 16:05:06
Jan
Auch wieder was gelernt. Danke! Das kam in all den Beispiel im Web nicht rüber (für mich).
Danke :-)

Anzeige
AW: VBA: Wert einer Zelle mithilfe des Namens auslesen
14.08.2014 00:41:16
Ewald
Hallo,
die einfache Schreibweise
Range(...).Cells(1, 1)
ist fehlerhaft, sie fängt zwar mit der oberen linken Zelle des Bereichs an, verläßt aber den Bereich sowohl nach unten als auch nach rechts.
Um nur im Bereich zu bleiben sollten Variablen verwendet werden zB. x;y
Range(...).Cells(x, y)
diese müssen überwacht werden, ist x > Range(...).Rows.Count oder y > Range(...).Columns.Count darf kein Ergebnis angezeigt werden oder es muß eine Meldung kommen.
Nur so ist gewährleistet das auch nur Werte aus dem Namensbereich angezeigt werden
Gruß Ewald

Anzeige
Sprich den Index an ...
13.08.2014 15:42:13
Matthias
Hallo
Option Explicit
Sub WertAusZelle()
MsgBox Range("EigenerName")(3)
End Sub
Das wäre die 3.Zelle in Deinem Namensbereich der Spalte.
Evtl noch das Blatt referenzieren.
Gruß Matthias

AW: Sprich den Index an ...
13.08.2014 16:04:25
Jan
Der Index.. die Schreibweise habe ich gesucht. Ich vermute, dass dies mein Problem löst nach dem Einfügen neuer Spalten alle Absolut referenzierten Zellen neu Nachzu"-alphabetisieren".
Danke Matthias.

Anzeige
Danke für die Rückmeldung ... owT
13.08.2014 16:10:53
Matthias

AW: Sprich den Index an ...
13.08.2014 16:20:21
Daniel
HI
wenn du den Index verwendest und dein Zellbereich hat mehrere Zeilen und mehrere Spalten, dann läuft der Index zunächsts in der selben Spalte nach rechts und springt dann in die nächste Zeile
Range(...).Index(2) ist also die Zelle in der ersten Zeile in der zweiten Spalte des Zellbereichs (Wenn die Range 2 oder mehr Spalten umfasst)
Gruß Daniel

Anzeige
AW: Sprich den Index an ...
13.08.2014 16:24:47
Jan
Verstehe. Vielen vielen Dank!
Grüße,
Jan

das war aber nicht gefragt !!
13.08.2014 18:32:56
Matthias
Hallo Daniel
Das war aber nicht gefragt !!
Zitat von Jan

ich habe einer kompletten Spalte einen Namen gegeben.
Darauf habe ich geantwortet!
Das was Du hier machst, ist das Abwerten anderer Vorschläge(denn es war ja abgeschlossen)
Denn anders ist das für mich nicht zu deuten.
Schade, denn Du bist ja eigentlich ein kluges Köpfchen.
Warunm Du das jetzt brauchst ist mir schleierhaft.
Gruß Matthias

Anzeige
AW: das war aber nicht gefragt !!
13.08.2014 18:57:35
Daniel
HI Matthias
ich verstehe meinen Beitrag jetzt überhaupt nicht als Abwertung deiner Antwort, ganz im Gegenteil.
Ich gehe nur davon aus, dass Jan vielleicht in naher oder ferner Zukunft (oder irgendjemand anderes, der zu einem ähnlichen Problem recheriert und dabei diesen Tread findet) mal mit einem nicht nur 1-zeiligen oder 1-spaltigen Zellbereich arbeiten muss und dann sollte er wissen was passiert, wenn er den Einzelindex verwendet.
Weil ich deine Lösung prinzipell gut finde, habe ich sie um eine weiterführende Information ergänzt.
Gruß Daniel

Anzeige
ok ... dann ist ja alles gut :-) owT
13.08.2014 19:01:50
Matthias

Na, dann noch 'ne 'weiterführende Info'!
13.08.2014 19:29:43
Luc:-?
Wird der ZellBereich zuvor in ein Array übertragen und dann mit For Each durchlaufen, ist es genau umgekehrt: erst alle Zeilen der 1., dann der 2.Spalte usw.
Gruß, Luc :-?
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige
Entdecke relevante Threads

Schau dir verwandte Threads basierend auf dem aktuellen Thema an

Alle relevanten Threads mit Inhaltsvorschau entdecken
Anzeige
Anzeige

Infobox / Tutorial

Wert einer Zelle mithilfe des Namens auslesen


Schritt-für-Schritt-Anleitung

Um den Wert einer Zelle mithilfe des Namens in Excel VBA auszulesen, kannst Du folgende Schritte befolgen:

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

  2. Lege ein neues Modul an: Klicke mit der rechten Maustaste auf „VBAProject (DeineDatei)“, wähle „Einfügen“ und dann „Modul“.

  3. Füge den Code ein: Kopiere den folgenden Code in das Modul:

    Sub WertAusZelle()
       Dim wert As Variant
       wert = Range("EigenerName").Cells(1, 1).Value
       MsgBox wert
    End Sub
  4. Führe das Makro aus: Drücke F5 oder wähle „Ausführen“ im Menü, um das Makro zu starten.

Mit diesem Code kannst Du den Wert der ersten Zelle im Bereich „EigenerName“ auslesen und in einer Meldung anzeigen lassen.


Häufige Fehler und Lösungen

  • Fehler: "Laufzeitfehler 1004"

    • Lösung: Überprüfe, ob der Name „EigenerName“ korrekt ist und tatsächlich auf einen Zellbereich verweist.
  • Fehler: Falscher Zellinhalt

    • Lösung: Achte darauf, dass Du die Cells-Methode korrekt verwendest. Cells(1, 1) gibt die erste Zelle zurück. Wenn Du z.B. Cells(1, 2) verwendest, greifst Du auf die zweite Spalte zu.

Alternative Methoden

  • Verwendung von Cells ohne Range: Du kannst auch direkt auf die Zelle zugreifen ohne den Namen zu verwenden:

    Sub DirektZugriff()
       Dim wert As Variant
       wert = Cells(3, 1).Value ' Greift auf A3 zu
       MsgBox wert
    End Sub
  • Zugriff auf mehrere Zellen: Wenn Du alle Zellen in einem benannten Bereich durchlaufen möchtest, verwende eine For-Schleife:

    Sub AlleZellenDurchlaufen()
       Dim Zelle As Range
       For Each Zelle In Range("EigenerName")
           MsgBox Zelle.Value
       Next Zelle
    End Sub

Praktische Beispiele

  1. Einen Wert in eine andere Zelle schreiben:

    Sub WertInAndereZelle()
       Dim wert As Variant
       wert = Range("EigenerName").Cells(1, 1).Value
       Range("B1").Value = wert ' Schreibt den Wert in Zelle B1
    End Sub
  2. Werte aus mehreren Zellen in eine Liste sammeln:

    Sub WerteAuflisten()
       Dim Zelle As Range
       Dim i As Integer
       i = 1
       For Each Zelle In Range("EigenerName")
           Cells(i, 2).Value = Zelle.Value ' Schreibt die Werte in die Spalte B
           i = i + 1
       Next Zelle
    End Sub

Tipps für Profis

  • Verwende Fehlerbehandlung: Füge On Error Resume Next hinzu, um Laufzeitfehler zu handhaben, falls die angegebene Zelle nicht vorhanden ist.

  • Namensbereiche dynamisch aktualisieren: Halte Deine Namensbereiche aktuell, um sicherzustellen, dass Dein VBA-Code immer die richtigen Zellen referenziert, auch nach dem Hinzufügen oder Entfernen von Spalten.


FAQ: Häufige Fragen

1. Wie kann ich den Wert einer Zelle direkt auslesen? Du kannst den Wert direkt mit Range("Zellenname").Value auslesen, z.B. Range("A1").Value.

2. Was passiert, wenn ich mehr als einen Zellbereich benannt habe? Wenn Du mehrere Zellen benannt hast, kannst Du mit Range("Namensbereich").Cells(Zeile, Spalte).Value auf spezifische Zellen zugreifen.

3. Kann ich einen Wert aus einer Zelle in eine andere Arbeitsmappe schreiben? Ja, Du kannst auf eine andere Arbeitsmappe zugreifen, indem Du den vollständigen Verweis angibst, z.B. Workbooks("andereDatei.xlsx").Sheets("Blattname").Range("A1").Value = wert.

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