【发布时间】:2021-10-02 15:46:58
【问题描述】:
我有两个工作簿“源”和“目标”。我想浏览每张目标工作簿并找到所有命名范围。如果范围名称与工作表的名称相同(来自其他工作簿:Source),那么我会将数据从 Source 复制到 Target。
- 假设在 Source 我有一个 工作表 ("Test1") 而在 Target 我有一个 命名范围 (" Test1") 在随机表中。我想匹配这些并将数据从工作表“Test1”复制到范围“Test1”。
但我不知道如何引用动态范围/数组。我想使用数组,因为它更快。请问有什么想法吗?谢谢是提前。这是我迄今为止尝试过的:
Public Sub test()
Dim wb1 As Workbook, wb2 As Workbook
Set wb1 = Workbooks("Source.xlsx")
Set wb2 = Workbooks("Target.xlsx")
For Each ws2 In wb2.Worksheets
For Each nm In wb2.Names
For Each ws1 In wb1.Worksheets
If ws1.Name = nm.Name Then
'Here is the problem, I don't know how to define this dynamic array properly:
'It should be arrTrgt3 = ws2.Range("A1:D5") but I want to use named range, and I don't
'know this name yet.
arrTrgt3 = nm.RefersToRange.Address
ws2.Range("A1").Resize(UBound(arrTrgt3), UBound(arrTrgt3, 2)) = arrTrgt3
End If
Next
Next
Next
End Sub
【问题讨论】:
标签: arrays excel vba dynamic named-ranges