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

Forumthread: einzelne Zellen in mit Namen versehenen Bereichen ansprechen - Excel und VBA

einzelne Zellen in mit Namen versehenen Bereichen ansprechen - Excel und VBA
28.11.2019 09:59:52
Ben
Hallo miteinander,
super Forum - ich habe hier schon viel gelernt und gefunden. Jetzt bin ich aber auf eine Frage gestoßen, wo ich noch nichts zu gefunden habe und muß jetzt direkt mal nachfragen.
Vor geraumer Zeit habe ich angefangen, zwecks besserer Nachvollziehbarkeit und um Makros von Tabellenänderungen unabhängig zu machen, mit benannten Zellen und Bereichen zu arbeiten und bestehende Tabellen entsprechend anzupassen.
Darauf, daß ich, wenn ich z.B. eine Zelle in der gleichen Zeile in einenm Spaltenbereich so bequem einfach mit dem Bereichsnamen ansprechen kann, bin ich bereits vor einiger Zeit selbst gestoßen.
Was ist aber, wenn ich von woanders aus, eine Zelle in einem benannten Bereich adressieren will. Gibt es da im Sinne von (ich weiß, daß das so nicht funktioniert) Name,#Spalte,#Zeile eine elegante Möglichkeit, eine einzelne Zelle direkt anzusprechen?
...und jetzt kommt es: Ohne Index() zu nutzen, weil dabei die Nachvollziehbarkeit leidet (Markierung des Bereichs aber nicht der Zelle, mit Indirekt() wird es dann noch lustiger), die ich ja eigentlich verbessern wollte.
...und in VBA ohne WorksheetFunction.Index(Range("xxx")) - um nicht unnötig riesige Ungetüme zu erzeugen - Range("xxx",Z,S) fänd' ich da irgendwie handlicher. Und wenn ich mich richtig erinnere, dann hab ich auch mal gehört, daß Worksheet-Funktionen nur ein Behelf sind weil langsamer als VBA-Funktionen.
...oder muß ich mit diesen Möglichkeiten leben?
Danke schonmal für Eure Mühe
Ben
Anzeige
AW: einzelne Zellen in mit Namen versehenen Bereichen ansprechen - Excel und VBA
28.11.2019 10:02:18
Hajo_Zi
Hallo Ben,
warum Index?
Warum nicht einfach Range"DeinNamen")?

AW: einzelne Zellen in mit Namen versehenen Bereichen ansprechen - Excel und VBA
28.11.2019 10:16:15
EtoPHG
Hallo Ben,
Was ist den eleganter als INDEX(BennanterBereich;Zeile;Spalte) ?
Ein Benannter Bereich (aus mehrere Zellen), ist gleichbedeutend mit einer Matrix. Und dir Referenzierung mit Koordination innerhalb dieser ist wohl das Einfachste.
Eine Alternative: Anstelle von benannten Bereiche, intelligente Tabellen erstellen.
Gruess Hansueli
Anzeige
AW: einzelne Zellen in mit Namen versehenen Bereichen ansprechen - Excel und VBA
28.11.2019 10:55:53
Ben
@Hajo_Zi: Weil ich damit keine einzelne Zelle in dem entsprechenden Bereich adressieren kann...
@EtoPHG: da geht es mir ja auch eher um die Nachvollziehbarkeit, wenn irgendwo Fehler auftreten oder wenn ich nach längerer Zeit daran rumbaue - Excel markiert nur den Bereich, auf welchen ich mich beziehe, nicht aber die Zelle, welche durch die Index-Funktion anspreche.
Außerdem: Meine Tabellen sind immer intelligent!!! ;) Naja, jedenfalls meistens, weil ich mich um Äußerlichkeiten erst kümmere, wenn die Funktionen stehen. Hier geht es aber um teilweise 15 Jahre alte Dateien, welche von irgendwelchen Leuten angefangen wurden, die ich noch nie getroffen habe und an denen seit damals immer wieder rumgebaut worden ist. Außerdem dienen diese Tabellen (jedenfalls die meisten) zur Auswertung von Prüfstandsdaten und da muß man damit leben, was einem die PS-Software so serviert, wenn man nicht alles nach dem Import erstmal umsortieren will... Ansonsten bin ich ein großer Fan und Anwender von intelligentem Tabellendesign - danke der Nachfrage ;)
Anzeige
intelligente Tabelle ist ein internes XL-Feature
28.11.2019 11:47:03
EtoPHG
und keine 'allgemeine' Floskel, Ben.
Offensichtlich verstehst du den Begriff "intelligente Tabelle" nicht.
Wenn du einen deiner Bereiche selektierst und Ctrl-T drückst, was passier dann?
Aufgrund deiner Levelangabe Excel gut hab ich angenommen, dass du das verstehst.
In deiner angegebenen XL Version findest du im Menü "Einfügen" - Gruppe "Tabellen" - Das Icon "Tabelle".
Schau dir im Namensmanager an, wenn du mal einen Bereich in ein iTabelle gewandelt hast.
In ihr kannst du nämlich einzelne Zeile mit z.B. Spaltenüberschriften referenzieren.
Gruess Hansueli
Anzeige
AW: einzelne Zellen in mit Namen versehenen Bereichen ansprechen - Excel und VBA
28.11.2019 10:28:16
Nepumuk
Hallo Ben,
einfach so:
Range("DeinName").Cells(1,1)
das entspricht der oberen linken Zelle des benannten Bereichs.
Gruß
Nepumuk
AW: einzelne Zellen in mit Namen versehenen Bereichen ansprechen - Excel und VBA
28.11.2019 11:00:45
Ben
Super, Danke, das löst ja schonmal den größten Teil meiner Probleme. Wenn ich nur mehr von der Grammatik objektorientierter Sprachen verstünde, hätte ich da auch selbst drauf kommen können... ;) (die ist mir seit fast 20 Jahren bömisch...)
Da Du dazu nix gesagt hast, gehe mal davon aus, daß es im Excel keine Möglichkeit gibt, die Index-Funktion zu umgehen?
Anzeige
AW: einzelne Zellen in mit Namen versehenen Bereichen ansprechen - Excel und VBA
28.11.2019 11:36:24
Nepumuk
Hallo Ben,
daß es im Excel keine Möglichkeit gibt, die Index-Funktion zu umgehen?
Ich kenne in Excel keine andere Möglichkeit.
Gruß
Nepumuk
AW: einzelne Zellen in mit Namen versehenen Bereichen ansprechen - Excel und VBA
28.11.2019 11:46:11
Ben
Dann Danke, wäre aber ohnehin eher das Sahnehäubchen gewesen ;)
Der Thread ist damit erledigt...

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige
Anzeige
Anzeige
Anzeige

Infobox / Tutorial

Einzelne Zellen in benannten Bereichen ansprechen


Schritt-für-Schritt-Anleitung

Um eine einzelne Zelle in einem benannten Bereich in Excel anzusprechen, kannst Du die Range-Funktion in VBA verwenden. Hier ist eine einfache Schritt-für-Schritt-Anleitung:

  1. Öffne den VBA-Editor: Drücke ALT + F11.

  2. Füge ein neues Modul hinzu: Klicke mit der rechten Maustaste auf deinen VBA-Projektbaum und wähle Einfügen -> Modul.

  3. Schreibe den VBA-Code: Verwende den folgenden Code, um eine benannte Zelle anzusprechen:

    Sub Beispiel()
       Dim wert As Variant
       wert = Range("DeinName").Cells(1, 1).Value ' Hier wird die obere linke Zelle des benannten Bereichs angesprochen
       MsgBox wert
    End Sub
  4. Führe das Makro aus: Drücke F5, um das Makro auszuführen und den Wert der benannten Zelle anzuzeigen.


Häufige Fehler und Lösungen

  • Fehler: "Objekt nicht gefunden"

    • Lösung: Stelle sicher, dass der Name des benannten Bereichs korrekt ist und dass er in der aktuellen Arbeitsmappe existiert.
  • Fehler: "Typen unverträglich"

    • Lösung: Überprüfe den Datentyp der Zelle, die Du ansprechen möchtest. Wenn Du versuchst, einen Textwert in eine Zahl zu konvertieren, kann dies zu Problemen führen.

Alternative Methoden

Wenn Du auf alternative Weisen eine Zelle in einem benannten Bereich ansprechen möchtest, gibt es folgende Optionen:

  1. Intelligente Tabellen: Anstatt benannte Bereiche zu verwenden, kannst Du auch intelligente Tabellen erstellen. Diese bieten mehr Flexibilität und einfache Referenzierung von Zellen.

    Sub BeispielIntelligenteTabelle()
       Dim wert As Variant
       wert = Tabelle1[[#Header],[DeineSpalte]].Value ' Ansprache einer Zelle in einer intelligenten Tabelle
       MsgBox wert
    End Sub
  2. Direktes Ansprechen von Zellen: Du kannst auch die Cells-Methode verwenden, um Zellen in einem benannten Bereich zu adressieren, z.B. Range("DeinName").Cells(1, 2).


Praktische Beispiele

Hier sind einige praktische Beispiele, wie Du benannte Zellen ansprechen kannst:

  • Einzelne Zelle ansprechen:

    Dim wert As Variant
    wert = Range("MeinBenannterBereich").Cells(2, 1).Value
  • Wert einer benannten Zelle ändern:

    Range("MeinBenannterBereich").Cells(1, 1).Value = "Neuer Wert"
  • Schleife über alle Zellen in einem benannten Bereich:

    Dim cell As Range
    For Each cell In Range("MeinBenannterBereich")
       MsgBox cell.Value
    Next cell

Tipps für Profis

  • Verwende With-Anweisung: Um den Code lesbarer und effizienter zu gestalten, kannst Du die With-Anweisung verwenden:

    With Range("DeinName")
       MsgBox .Cells(1, 1).Value
    End With
  • Benutze den Namensmanager: Überprüfe im Namensmanager (STRG + F3), ob alle benannten Bereiche korrekt eingerichtet sind und keine Duplikate vorhanden sind.


FAQ: Häufige Fragen

1. Wie kann ich eine benannte Zelle in einer Formel ansprechen? Du kannst eine benannte Zelle in einer Formel einfach durch ihren Namen verwenden, z.B. =DeinName + 5.

2. Gibt es eine Möglichkeit, die Index-Funktion in Excel zu umgehen? In Excel gibt es keine direkte Möglichkeit, die Index-Funktion zu umgehen, wenn Du Zellen in einem benannten Bereich ansprechen möchtest. Du kannst jedoch die Range- oder Cells-Methoden verwenden, um dies zu erreichen.

3. Was ist der Vorteil von benannten Bereichen? Benannte Bereiche verbessern die Nachvollziehbarkeit und Lesbarkeit von Formeln und Makros, da Du anstelle von Zellreferenzen leicht verständliche Namen verwenden kannst.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige