Live-Forum - Die aktuellen Beiträge
Datum
Titel
28.04.2024 20:05:21
28.04.2024 18:33:31
28.04.2024 18:25:12
Anzeige
Archiv - Navigation
1932to1936
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Namensmanager - Bereich anpassen

Namensmanager - Bereich anpassen
28.06.2023 16:46:04
Mat

Hallo,

ich habe jetzt schon Stunden probiert und komme nicht weiter und hoffe auf Mitstreiter.

Ich habe in einem Dokument mehrere Zellnamen, diese haben teilweise als Bereich das Arbeitsblatt angegeben und nicht die gesamte Arbeitsmappe.
Ich benötige bei allen Namen die gesamte Arbeitsmappe als Bereich.
Da dies nicht direkt änderbar ist, habe ich es mit einem Code aus dem Netz probiert, der eigentlich passen müsste.
Leider funktioniert es nicht gewünscht.

Sub ConvertWorksheetNamedRangesToWorkbookNamedRanges()
    Dim nName As Name
    'Loop Through each named Range
    For Each nName In ActiveWorkbook.Names
        'Is Name scoped at the Workbook level?
        If TypeOf nName.Parent Is Workbook Then

        End If
        'Is Name scoped at the Worksheet level?
        If TypeOf nName.Parent Is Worksheet Then
                Dim sName As String
                sName = nName.Name 'Save the name of the name
                Dim rngName As Range
                Set rngName = Range(nName) ' Save the range of the name
                nName.Delete    ' Delete the name
                'Create a new one on workbook scope
                ThisWorkbook.Names.Add Name:=sName, RefersToR1C1:="=" & rngName.Address(ReferenceStyle:=xlR1C1)
                
            ' End If
        End If
    Next nName
End Sub



Zu meiner Interpretation:
Das Script schaut sich jeden Namen an und überprüft die Bereichszuweisung. Wenn ein Tabellenblatt als Bereich zugewiesen ist,
werden Name und Adresse gespeichert. Der Name wird gelöscht und dann wieder neu angelegt mit Arbeitsmappe als Bereich.

Funktion:
Die Namen werden korrekt gelöscht und auch neu angelegt, haben dann aber wieder das Tabellenblatt als Bereich.

Eine Beispieldatei liegt hier:
https://www.herber.de/bbs/user/159754.xlsm

Danke und viele Grüße
Mat

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

Betreff
Datum
Anwender
Anzeige
AW: Namensmanager - Bereich anpassen
28.06.2023 17:15:33
onur
For Each nName In ActiveWorkbook.Worksheets("Tabelle1").Names


AW: Namensmanager - Bereich anpassen
28.06.2023 17:22:40
Mat
Hi onur,

Deine Variante ist zur Auswahl der entsprechenden Namen eleganter.
Leider ändert es bei mir nichts an der Funktion.
Die gelöschten und dann wieder erstellten Namen haben immer noch als Bereich das Tabellenblatt und nicht die Arbeitsmappe.
Funktioniert es bei Dir?


AW: Namensmanager - Bereich anpassen
28.06.2023 17:58:08
Ulf
Option Explicit

Public Sub WechsleScope()
    Dim col As Collection
    Dim n As Name
    Dim nn As Names
    Dim varName
    Dim rngName As Range
    Dim strNew As String
    Set nn = ThisWorkbook.Names
    Set col = New Collection
    
    For Each n In nn
        If InStr(n.Name, "!") > 0 Then
            col.Add n.Name
        End If
    Next
    For Each varName In col
        Set rngName = Range(varName) ' Save the range of the name
        nn.Item(varName).Delete    ' Delete the name
        'Create a new one on workbook scope
        strNew = Right(varName, Len(varName) - InStr(varName, "!"))
        ThisWorkbook.Names.Add Name:=strNew, RefersToR1C1:="=" & rngName.Address(ReferenceStyle:=xlR1C1)
    Next
End Sub
hth
Ulf


Anzeige
AW: Namensmanager - Bereich anpassen
28.06.2023 18:03:37
Mat
Hallo Ulf,
vielen Dank - es funktioniert!
Ich verstehe zwar noch nicht ganz, wie es funktioniert, aber es läuft alles wie gewünscht.

Viele Grüße
Mat

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige