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

Forumthread: Definierte Namen als Range verwenden?

Definierte Namen als Range verwenden?
EliasK
Hallo Forum,
in Excel selbst kann ich ja Namen definieren, Tabelle "Setup", Zelle A1 bekommt meinetwegen den Namen "Standort".
Kann ich diesen Namen "Standort" in VBA anstatt

Sheets("Setup").Range("A1") 
verwenden?
Oder geht da nix?
Oder würde es mehr Sinn machen, diese Range als globale Variable zu definieren (atm ca. 80 einzelne Zellen)?
Hintergrund ist folgender:
Ich muss (möchte sagt mein Chef ;-) ) eine "Anwendung" erstellen, in welcher in einem Tabellenblatt grundsätzliche Konstanten festgelegt werden, quasi ein "Setup".
Zum Beispiel der Standort der Dependance, die Namen der MA, Steuersätze, Ablagepfade, E-Mail-Adressen, usw.
Wenn ich mich in einem Sub auf diese Zelle beziehe, ist ja alles schick, wenn ich allerdings diese Zelle verschiebe (umsortiere), funktioniert mein Code nicht mehr, ich muss diesen also anpassen.
Da diese Anwendung durchaus einen größeren Umfang hat und im Lauf der Zeit immer neue Funktionen hinzukommen, kann es durchaus vonnöten sein, das "Setup" umzusortieren.
Sind die Zellen als Namen definiert, ist Excel ja so schlau, diese Umsortiererei zu erkennen und die Bezüge der Namen entsprechend anzupassen.
In VBA muss ich jeden besch... ('tschuldigung) Range per Hand nacharbeiten.
Das ist ne ganze Menge.
Ich habe das bisher in einem kleineren Umfang schon gehabt, das macht echt keinen Spass...!!
Nun soll die Sache größer, schöner, besser werden, da habe ich so meine Befürchtungen... :-)
Wenn ich die Namen als globale Variablen definieren könnte, wärs auch ok, aber irgendwie doppelt gemoppelt.
Hat wer mit solchen Problematiken schon zu tun gehabt?
Grüße
Elias
Anzeige

3
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Benutzer
Anzeige
Sheets("Setup").Range("Standort") kwT
17.09.2009 07:19:04
Matthias
AW: Definierte Namen als Range verwenden?
17.09.2009 07:21:02
xr8k2
Hallo Elias,
so ein Setup-Sheet macht für dein Vorhaben, so denke ich, durchaus Sinn. Natürlich kannst du im VBA-Code auch definierte Namen verwenden:
Sheets("Setup").Range("Standort")
oder noch besser (kürzer) so:
[Standort]
Gruß,
xr8k2
Anzeige
AW: Definierte Namen als Range verwenden?
17.09.2009 11:18:15
EliasK
Das ist gut.
Vielen Dank.
;

Forumthreads zu verwandten Themen

Anzeige
Entdecke relevante Threads

Schau dir verwandte Threads basierend auf dem aktuellen Thema an

Alle relevanten Threads mit Inhaltsvorschau entdecken
Anzeige
Anzeige

Infobox / Tutorial

Definierte Namen in Excel VBA verwenden


Schritt-für-Schritt-Anleitung

  1. Definiere deinen Namen: Gehe zu deinem Excel-Blatt und wähle die Zelle aus, die du benennen möchtest. Zum Beispiel, markiere die Zelle A1 auf dem Blatt "Setup" und gib ihr den Namen "Standort". Dies kannst du unter "Formeln" > "Namen definieren" tun.

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

  3. Ein neues Modul hinzufügen: Klicke im Menü auf "Einfügen" > "Modul", um ein neues Modul zu erstellen.

  4. Code einfügen: Schreibe nun deinen VBA-Code, um den definierten Namen zu verwenden. Du kannst entweder den vollständigen Bezug oder die kurze Notation verwenden:

    Sub Beispiel()
       Dim standort As String
       standort = Sheets("Setup").Range("Standort").Value
       ' oder kürzer
       standort = [Standort].Value
       MsgBox standort
    End Sub
  5. Code ausführen: Drücke F5, um den Code auszuführen und den Wert der Zelle "Standort" anzuzeigen.


Häufige Fehler und Lösungen

  • Fehler: "Name ist nicht definiert": Überprüfe, ob der Name korrekt definiert wurde. Du kannst das unter "Formeln" > "Namensmanager" überprüfen.

  • Fehler: Bezug funktioniert nicht: Wenn du die Zelle verschoben hast, stelle sicher, dass der Name auf die neue Zelle verweist. Excel passt die Bezüge automatisch an, jedoch nicht immer in VBA.


Alternative Methoden

Neben der Verwendung von definierten Namen kannst du auch globale Variablen in deinem VBA-Code verwenden. Dies kann jedoch unübersichtlich werden, wenn du viele Variablen hast. Eine mögliche Alternative ist, die Werte in einer Benutzerform zu speichern oder in einer Datenbank zu verwalten.


Praktische Beispiele

Hier sind einige Beispiele, wie du definierte Namen in VBA verwenden kannst:

  1. Einen definierten Namen auslesen:

    Sub AuslesenName()
       MsgBox "Der Standort ist: " & [Standort]
    End Sub
  2. Einen definierten Namen in einer Berechnung verwenden:

    Sub Berechnung()
       Dim umsatz As Double
       Dim steuersatz As Double
       umsatz = [Umsatz]
       steuersatz = [Steuersatz]
       MsgBox "Der Gesamtbetrag inklusive Steuer ist: " & umsatz * (1 + steuersatz)
    End Sub

Tipps für Profis

  • Verwende aussagekräftige Namen: Stelle sicher, dass die definierten Namen selbsterklärend sind, um die Lesbarkeit deines Codes zu erhöhen.

  • Namen in der Dokumentation festhalten: Halte eine Liste der verwendeten definierten Namen und deren Bedeutung in deiner VBA-Dokumentation fest.

  • Namen konsistent verwenden: Achte darauf, dass du die definierten Namen konsistent in deinem gesamten Projekt verwendest, um Verwirrung zu vermeiden.


FAQ: Häufige Fragen

1. Kann ich mehrere definierte Namen gleichzeitig auslesen?
Ja, du kannst mehrere definierte Namen in einer Schleife auslesen, indem du die Namen in einem Array speicherst.

2. Was ist der Vorteil von definierten Namen in VBA?
Der Hauptvorteil ist, dass du die Zellenbezüge nicht manuell anpassen musst, wenn sich die Position der Zellen ändert. Excel passt die Bezüge automatisch an, was dir Zeit und Mühe spart.

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