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

per VBA lokale Namen definieren

Forumthread: per VBA lokale Namen definieren

per VBA lokale Namen definieren
16.04.2013 08:37:19
Peter
Hallo,
ich möchte per VBA in allen Blättern einer Arbeitsmappe lokale Namen per VBA definieren.
Meine Vostellung:
Die Zellen in dem der lokale Name erzeugt werden soll sind mit der
Hintergrundfarbe gelb ( 6 ) unterlegt und der Inhalt der Zelle enthält
den gewünschten Namen.
Da der lokale Name sich aus Tabellenname und dem gewünschten Namen der Zelladresse
zusammensetzt, müsste die gesamte Arbeitsmappe nach gelb unterlegten Zellen durchsucht
werden, der Tabellenname und der Inhalt der gelb unterlegten Zelle ausgelesen werden
und daraus der lokale Name definiert werden.
z.B.: Tabelle1'!Name
Tabelle1'!Vorname
Tabelle2'!Name
Tabelle2'!Vorname
Wer kann helfen?
Danke
Peter

Anzeige

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

Betreff
Datum
Anwender
Anzeige
AW: per VBA lokale Namen definieren
16.04.2013 08:49:25
Klaus
Hi,
wie wärs damit?
Sub MakeNames()
Dim r As Range
On Error GoTo hell
'Alle Zellen
For Each r In ActiveSheet.UsedRange
'prüfe auf Gelb
If r.Interior.ColorIndex = 6 Then
'erstelle Namen
ActiveWorkbook.Names.Add Name:=r.Value, RefersToR1C1:="=" & ActiveSheet.Name & " !" & r. _
Address(1, 1, xlR1C1)
End If
Next r
GoTo heaven
hell:
MsgBox ("Abbruch, warscheinlich ungültiger Name? (Leerzeichen oder so?)")
heaven:
End Sub
Grüße,
Klaus M.vdT.

Anzeige
etwas andere Methode
16.04.2013 09:03:45
Rudi
Hallo,
Sub MakeNames()
Dim r As Range
On Error GoTo hell
'Alle Zellen
For Each r In ActiveSheet.UsedRange
'prüfe auf Gelb
If r.Interior.Color = RGB(255, 255, 0) Then
'erstelle Namen
r.Name = ActiveSheet.Name & "!" & r.Value
End If
Next r
GoTo heaven
hell:
MsgBox ("Abbruch, warscheinlich ungültiger Name? (Leerzeichen oder so?)")
heaven:
End Sub

Gruß
Rudi

Anzeige
AW: etwas andere Methode
16.04.2013 09:09:04
Klaus
Hallo Rudi,
das ist natürlich etwas eleganter als meins ;-)
Ich hatte den Makrorekorder genutzt um die Zeile "Namen Definieren" zu bekommen - daher mein umständlicher Weg.
Hallo Peter,
nimm Rudi's Code der ist schöner!
Grüße,
Klaus M.vdT.

AW: etwas andere Methode
16.04.2013 10:08:18
Rudi
Hallo,
ich finde es erheblich einfacher, einem Objekt einen Namen zuzuweisen als einen Namen zu definieren und dem ein Objekt zuzuweisen.
Gruß
Rudi
Anzeige
;
Anzeige

Infobox / Tutorial

Lokale Namen in Excel per VBA definieren


Schritt-für-Schritt-Anleitung

Um lokale Namen in Excel per VBA zu definieren, kannst du den folgenden Code verwenden. Dieser sucht alle Zellen mit einer gelben Hintergrundfarbe und erstellt basierend auf deren Inhalt und dem Tabellennamen einen lokalen Namen.

  1. Öffne Excel und drücke ALT + F11, um den VBA-Editor zu öffnen.
  2. Klicke auf Einfügen > Modul, um ein neues Modul zu erstellen.
  3. Füge den folgenden Code in das Modul ein:
Sub MakeNames()
    Dim r As Range
    On Error GoTo hell
    'Alle Zellen
    For Each r In ActiveSheet.UsedRange
        'prüfe auf Gelb
        If r.Interior.ColorIndex = 6 Then
            'erstelle Namen
            ActiveWorkbook.Names.Add Name:=r.Value, RefersToR1C1:="=" & ActiveSheet.Name & "!" & r.Address(1, 1, xlR1C1)
        End If
    Next r
    GoTo heaven
hell:
    MsgBox ("Abbruch, wahrscheinlich ungültiger Name? (Leerzeichen oder so?)")
heaven:
End Sub
  1. Schließe den VBA-Editor und kehre zu Excel zurück.
  2. Führe das Makro MakeNames aus, um die lokalen Namen zu definieren.

Häufige Fehler und Lösungen

  • Ungültiger Name: Wenn du die Fehlermeldung "wahrscheinlich ungültiger Name?" erhältst, überprüfe, ob der Zelleninhalt Leerzeichen oder andere ungültige Zeichen enthält. Excel erlaubt keine Namen, die mit einem Zahlenzeichen (#) beginnen oder Leerzeichen enthalten.

  • Falsche Farbe: Achte darauf, dass die Zellen tatsächlich den Hintergrundfarbe-Index 6 (gelb) haben. Ansonsten findest du keine Zellen und keine Namen werden definiert.


Alternative Methoden

Eine alternative Methode, um Namen in Excel zu definieren, könnte die Verwendung der RGB-Funktion sein. Hier ist ein Beispiel:

Sub MakeNames()
    Dim r As Range
    On Error GoTo hell
    'Alle Zellen
    For Each r In ActiveSheet.UsedRange
        'prüfe auf Gelb
        If r.Interior.Color = RGB(255, 255, 0) Then
            'erstelle Namen
            r.Name = ActiveSheet.Name & "!" & r.Value
        End If
    Next r
    GoTo heaven
hell:
    MsgBox ("Abbruch, wahrscheinlich ungültiger Name? (Leerzeichen oder so?)")
heaven:
End Sub

Diese Methode ist direkter, da der Name direkt der Zelle zugewiesen wird, anstatt einen Bereichsnamen zu definieren.


Praktische Beispiele

Angenommen, du hast eine Tabelle mit den folgenden gelben Zellen:

A B
Name Vorname
--- ---
Max Mustermann
Lisa Müller

Nach dem Ausführen des VBA-Codes werden die folgenden lokalen Namen erstellt:

  • Tabelle1!Max
  • Tabelle1!Mustermann
  • Tabelle1!Lisa
  • Tabelle1!Müller

Diese Namen kannst du nun in Formeln verwenden, um auf die entsprechenden Zellen zuzugreifen.


Tipps für Profis

  • Nutze Option Explicit am Anfang deines Moduls, um sicherzustellen, dass alle Variablen deklariert sind. Dies hilft, Fehler zu vermeiden.

  • Überlege, die Farbauswahl dynamisch zu gestalten, indem du die Farbe als Parameter übergibst. So kannst du den Code vielseitiger verwenden.

  • Speichere regelmäßig deine Arbeitsmappe, um Datenverlust im Falle eines Fehlers zu vermeiden.


FAQ: Häufige Fragen

1. Was ist der Unterschied zwischen Bereichsnamen und lokalen Namen in Excel?
Bereichsnamen sind in der gesamten Arbeitsmappe sichtbar, während lokale Namen nur in dem Arbeitsblatt, in dem sie definiert wurden, verwendet werden können.

2. Kann ich lokale Namen auch ohne VBA definieren?
Ja, du kannst lokale Namen auch manuell über das Menü Formeln > Namensmanager definieren, jedoch ist das weniger effizient bei großen Datensätzen.

3. Was passiert, wenn ein Name bereits existiert?
Wenn ein Name bereits existiert, wird ein Fehler angezeigt. Du solltest sicherstellen, dass die Namen eindeutig sind, bevor du das Skript ausführst.

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