Я взломал код (из нескольких источников, ссылки внизу), который программно берет именованные диапазоны с областью действия листа и преобразует их в именованные диапазоны книги. Однако мой код работает только для некоторых именованных диапазонов, а не для других, и я не могу понять, почему.
Причина, по которой мне приходится это делать, заключается в том, что мне пришлось удалить две вкладки (одну из вкладок содержащий _T и другой _X) из исходного источника и скопируйте дубликаты этих вкладок из другого источника. Это оставляет меня с именованными диапазонами с областью действия книги #REF! #REF и именованными диапазонами рабочего листа, которые имеют диапазоны, которые я хочу, но они мне нужны с областью действия книги.
См. Код ниже
Если я запускаю этот код в поисках «_T», он работает отлично. Все именованные диапазоны книги, начинающиеся с _T, которые были #REF! #REF, теперь имеют правильный диапазон, а соответствующие им диапазоны рабочих листов удалены. ОДНАКО, если я запустил это в поисках "_X", рабочая книга с именем range не изменится. Я в тупике. Я даже пробовал другой подход, когда я вручную удаляю все диапазоны текущей книги, начиная с _X, а затем программно пытаюсь добавить их, используя ActiveWorkbook.Names.Add Name:=newNm,RefersTo:=nm.RefersTo
, который также ничего не делает (даже не добавляет новую запись).
Заранее благодарим за помощь.
Sub WStoWBscope()
Dim nm As Name, Ans As Integer, newNm As String, fltr As String
fltr = "_X" 'search string
For Each nm In ActiveWorkbook.Names 'look at all named ranges within the current workbook
If nm.Name Like "X!*" Then 'looks for worksheet scoped named range that has the correct range
If InStr(1, nm.Name, fltr) > 0 Then
newNm = Replace(nm.Name, "X!", "") 'save name of existing workbook named range
Range(nm.RefersTo).Name = newNm 'overwrite workbook named range with proper range
nm.Delete 'deletes worksheet named range
End If
End If
Next nm
End Sub
VBA для преобразования книги именованных диапазонов в область рабочего листа VBA для изменения объема именованных диапазонов из рабочего листа уровень к трудовой книжке