Der Code von JS20'07'11 ist wirklich unglaublich einfach und direkt. Ein Vorschlag, Ich mag würde geben, ist ein Ausrufezeichen in den Bedingungen zu setzen:
InStr(1, objName.RefersTo, sWsName+"!", vbTextCompare)
Da dies verhindern wird das Hinzufügen eines Namedrange in einer falschen Blatt. Bsp: Wenn der NamedRange auf ein Blatt mit dem Namen Plan11 verweist und Sie ein anderes Blatt mit dem Namen Plan1 haben, kann der Code einige Fehler machen, wenn Sie die Bereiche hinzufügen, wenn Sie das Ausrufezeichen nicht verwenden.
UPDATE
Eine Korrektur: Es ist am besten ein regulärer Ausdruck, den Namen des Blattes bewerten zu verwenden. Eine einfache Funktion, die Sie ist die folgende verwenden können (durch http://blog.malcolmp.com/2010/regular-expressions-excel-add-in angepasst, ermöglicht Microsoft VBScript Regular Expressions 5.5):
Function xMatch(pattern As String, searchText As String, Optional matchIndex As Integer = 1, Optional ignoreCase As Boolean = True) As String
On Error Resume Next
Dim RegEx As New RegExp
RegEx.Global = True
RegEx.MultiLine = True
RegEx.pattern = pattern
RegEx.ignoreCase = ignoreCase
Dim matches As MatchCollection
Set matches = RegEx.Execute(searchText)
Dim i As Integer
i = 1
For Each Match In matches
If i = matchIndex Then
xMatch = Match.Value
End If
i = i + 1
Next
End Function
Also, Sie so etwas verwenden:
xMatch("'?" +sWsName + "'?" + "!", objName.RefersTo, 1) <> ""
statt
InStr(1, objName.RefersTo, sWsName+"!", vbTextCompare)
Dies deckt Plan1 und 'Plan1' (wh Der Bereich bezieht sich auf mehr als eine Zelle) Variationen
TIPP: Vermeiden Sie Blattnamen mit einfachen Anführungszeichen ('), :).
Dieser Code scheint den Bereich der Bereiche zu ändern, die für die Arbeitsmappe auf dem Arbeitsblatt festgelegt sind. Ich dachte, es sollte das Gegenteil bewirken. d. h. Ändern des Bereichs von Arbeitsblatt zu Arbeitsmappe. –
Die ursprüngliche Frage scheint mir klar zu sein: "Beispiel: 'testName' bezieht sich auf 'sheet1'! A1: B2 mit scope-Arbeitsmappe. Wie würde ich das ändern zu 'testName' bezieht sich auf 'sheet1'! A1: B2 mit 'sheet1 ' Umfang?" –
Danke für das Addin. Es funktioniert sehr gut. – Anthony