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