MVCE во вновь созданной книге с 3 листами. Внутри которого на листах Sheet1 и Sheet2 было создано имя foo
, привязанное к каждому листу соответственно. После того, как область видимости книги, то же имя используется в отношении Sheet3. При доступе к имени рабочей книги в области видимости я получаю имя на листе 2 и не могу понять, почему.
Есть ли что-то очевидное, что мне не хватает?
Public Sub NameConfusion()
Do While ThisWorkbook.Names.Count > 0
ThisWorkbook.Names(1).Delete
Loop
AddNames
Debug.Print ThisWorkbook.Names("foo").RefersToRange.Address(False, False) ' --> B2 NOT expected
'I would expect it to be C5
ThisWorkbook.Names("foo").Delete
Debug.Print ThisWorkbook.Names("foo").RefersToRange.Address(False, False) ' --> C5 NOT expected, based on above
'I would expect it to be B2
End Sub
Private Sub AddNames()
Sheet1.Names.Add "foo", Sheet1.Range("a2")
Debug.Print ThisWorkbook.Names.Count ' --> 1 as expected
Sheet2.Names.Add "foo", Sheet2.Range("B2")
Debug.Print ThisWorkbook.Names.Count ' --> 2 as expected
ThisWorkbook.Names.Add "foo", Sheet3.Range("C5")
Debug.Print ThisWorkbook.Names.Count ' --> 3 as expected
End Sub
ПРИМЕЧАНИЕ. У меня были проблемы, когда это программно перезаписывало одно из имен в области рабочего листа с именем в области рабочей книги. Когда это происходит, добавление имен вручную через вкладку «Формулы»> группа «Определенные имена»> кнопка «Диспетчер имен» и пропуск оценки до Debug.Print
после вызова AddNames
все равно приведет к печати адреса без области действия книги.