Как мне использовать Split для именованного диапазона? - PullRequest
0 голосов
/ 23 сентября 2018

Я пытаюсь просмотреть формулы в диапазоне ячеек и сопоставить именованные диапазоны в рабочей таблице с любыми именованными диапазонами в формуле и заменить именованные диапазоны их ссылочными ячейками.

Dim rng As Range
Dim workrng As Range
Dim xname As Name
Dim arr() As Variant
Dim arr_string as String

Set workrng = Application.Selection
Set workrng = Application.InputBox("txt", "header txt", workrng.Address, Type:=8
Set workrng = workrng.SpecialCells(xlCellTypeFormulas)

For Each rng In workrng
    For Each xname in ThisWorkbook.names
        arr = Split(xname.Name, "!")
        arr_string = arr(1)
        Debug.Print arr_string
        If InStr(rng.Formula, xname.Name) > 0 Then
            rng.Formula = VBA.Replace(rng.Formula, xname.Name, VBA.Replace(xname.RefersTo, "=", ""))
        End If
    Next
Next

Когда я отлаживаю печать «xname.Name», я получаю результаты, которые включают имя листа.Например: технические характеристики! _MyNamedRange.Тем не менее, формула в ячейке говорит только: _MyNamedRange.Вот почему я пытаюсь разделить это.Однако, когда я отлаживаю свой массив, в нем ничего нет.

1 Ответ

0 голосов
/ 23 сентября 2018

Трудно точно понять, что делать без рабочего листа.Но пару изменений нужно сделать:

Dim arr() As Variant --> Dim arr As Variant

arr = Split(xname.Name, "!") --> arr = Split(xname.RefersTo, "!")
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...