如何在命名范围内使用拆分?

时间:2018-09-22 21:42:19

标签: arrays excel vba

我正在尝试浏览一系列单元格中的公式,并将工作表中的命名范围与该公式中的任何命名范围进行匹配,并将命名范围替换为其参考单元格。

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 :(得分:1)

没有工作表就很难确切知道该怎么办。但是您需要进行一些更改:

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

arr = Split(xname.Name, "!") --> arr = Split(xname.RefersTo, "!")