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

Namen manager von excel in vba verwenden

Forumthread: Namen manager von excel in vba verwenden

Namen manager von excel in vba verwenden
13.09.2013 15:40:58
excel
Hallo zusammen,
ich habe immer wieder Probleme meine Excel Namen (Formelmanager) in vba zu verwenden.
Sehr komisch für mich ist, dass es bei bestimmten namen klappt bei anderen wieder nicht. Alle Namen sind für die gesamte Arbeitsmappe freigegeben.
Beispiele
funktioniert nicht:
Dim Preis As Integer
Preis = Application.Names("Preis").Value * 1
Eigentlich sollte der Preis in dieser Formel verwendet werden
Tabelle13.Cells(i + 1, 6) = Tabelle13.Cells(i + 1, 5) * Application.Names("Preis").Value * 1
funktionier:
Tabelle13.Cells(i + 1, 15) = Application.Names("Frachtraumauslastung").Value
Ich hoffe es ist nur eine Kleinigkeit^und Ihr könnt mir helfen.
Viele Grüße
Tobias

Anzeige

5
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Namen manager von excel in vba verwenden
13.09.2013 16:05:57
excel
Hallo Tobias,
könnte evtl. daran liegen, dass deine Variable den gleichen Namen
trägt wie der Namensbereich (?)
Probier mal
Dim MyPreis As Integer
MyPreis = Application.Names("Preis").Value * 1
Alternativ:
Dim MyPreis as String
Gruß
Klaus

Anzeige
AW: Namen manager von excel in vba verwenden
13.09.2013 16:41:15
excel
Hi Klaus,
ne daran liegts leider nicht :(
Trotzdem Danke für die schnelle Antwort!
Er gibt mir beim Debuggen für die var Preis/MyPreis als integer den Wert 0 und las string dann nix bzw "".
Also irgendwie bekommt er den Zugriff auf den Namen nicht hin. Aber bei dem Namen Strecke klappts ja komischerweise.
Liegt es daran, dass die Strecke per VBA belegt wird und der Preis sich auf eine Excel-Zelle bezieht?
z.B.
Preis=interface!K2 Wert=1,288 (habs auch schon mit 1 und 1.2 probiert )
Strecke=4000 Wert=4000
Viele Grüße
Tobias

Anzeige
AW: Namen manager von excel in vba verwenden
13.09.2013 17:07:55
excel
Hallo Tobias,
mach doch einfach
Preis = Range("Preis").Value * 1
Das sollte in jedem Falle klappen ...
Gruß
Klaus

AW: Namen manager von excel in vba verwenden
13.09.2013 18:01:54
excel
Hallo Klaus,
HERRLICH! :)
Also ich glaube wenn ich nochmal wieder etwas zeit habe sollte ich mir doch mal die Range funktion ansehen. Ich hatte bis jetzt versucht über java und delphi kenntnisse zum Ergebnis zu kommen...
Vielen Dank!

Anzeige
Range ist ein Objekt, KEINE Fkt! owT
13.09.2013 20:21:55
Luc:-?
:-?
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige
Anzeige

Infobox / Tutorial

Verwendung des Namensmanagers in VBA


Schritt-für-Schritt-Anleitung

  1. Namen im Excel Namensmanager erstellen:

    • Gehe zu Formeln > Namensmanager.
    • Klicke auf Neu und erstelle einen neuen Namen, z.B. "Preis", der auf eine Zelle verweist.
  2. Namen in VBA verwenden:

    • Um den Wert eines Namens in VBA zu verwenden, kannst Du folgenden Code nutzen:
      Dim MyPreis As Double
      MyPreis = Application.Names("Preis").RefersToRange.Value
  3. Werte aus dem Namensmanager auslesen:

    • Du kannst auch direkt auf den Namen zugreifen, wie folgt:
      Dim Preis As Double
      Preis = Range("Preis").Value

Häufige Fehler und Lösungen

  • Problem: Wert bleibt 0 oder leer:

    • Überprüfe, ob der Name korrekt im Namensmanager definiert ist und auf die richtige Zelle verweist.
  • Fehler durch gleichnamige Variablen:

    • Wenn Du eine Variable im VBA-Code hast, die denselben Namen wie ein definierter Name im Namensmanager hat, kann dies zu Verwirrung führen. Ändere den Variablennamen, z.B.:
      Dim MyPreis As Double
      MyPreis = Application.Names("Preis").RefersToRange.Value
  • Zugriffsprobleme auf Namensbereiche:

    • Stelle sicher, dass der Name für die gesamte Arbeitsmappe freigegeben ist und nicht auf ein spezifisches Blatt beschränkt ist.

Alternative Methoden

  • Verwendung von Evaluate:

    • Du kannst den Wert eines Namens auch mit der Evaluate-Methode auslesen:
      Dim Preis As Double
      Preis = Evaluate("Preis")
  • Direkter Zugriff über Range:

    • Wenn Du nur mit Zellen arbeitest, kannst Du direkt auf die Zelle zugreifen:
      Dim Preis As Double
      Preis = Range("A1").Value ' Angenommen, Preis ist in A1

Praktische Beispiele

  • Beispiel 1: Setzen eines Wertes aus dem Namensmanager in eine Zelle:

    Sub SetValueFromNameManager()
      Dim Preis As Double
      Preis = Range("Preis").Value
      Tabelle13.Cells(1, 1).Value = Preis * 2 ' Beispiel: Preis verdoppeln
    End Sub
  • Beispiel 2: Berechnung mit mehreren Namen:

    Sub CalculateTotal()
      Dim Preis As Double
      Dim Strecke As Double
      Preis = Application.Names("Preis").RefersToRange.Value
      Strecke = Application.Names("Strecke").RefersToRange.Value
      Tabelle13.Cells(1, 2).Value = Preis * Strecke
    End Sub

Tipps für Profis

  • Verwende Option Explicit:

    • Setze am Anfang Deiner Module Option Explicit, um sicherzustellen, dass alle Variablen deklariert sind. Dies hilft, Fehler zu vermeiden, die durch falsche Variablennamen entstehen.
  • Dokumentation der Namen:

    • Halte eine Liste der verwendeten Namen und deren Verwendungszweck bereit, um die Übersicht zu behalten.
  • Fehlerprotokollierung:

    • Implementiere eine Fehlerbehandlung in Deinen VBA-Skripten, um Probleme schnell zu identifizieren:
      On Error GoTo ErrorHandler
      ' Dein Code hier
      Exit Sub
      ErrorHandler:
      MsgBox "Fehler: " & Err.Description

FAQ: Häufige Fragen

1. Warum funktioniert der Zugriff auf einige Namen nicht?
Es könnte daran liegen, dass Du eine Variable mit demselben Namen hast oder dass der Name nicht für die gesamte Arbeitsmappe freigegeben ist.

2. Kann ich auch mit benannten Bereichen arbeiten, die auf andere Blätter verweisen?
Ja, Du kannst auf benannte Bereiche zugreifen, die auf andere Blätter verweisen, solange sie korrekt im Namensmanager definiert sind.

3. Wie kann ich alle Namen im Namensmanager auslesen?
Du kannst alle Namen mit einer Schleife auslesen:

Dim n As Name
For Each n In ThisWorkbook.Names
    Debug.Print n.Name & ": " & n.RefersTo
Next n

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige