【发布时间】:2016-10-30 09:37:23
【问题描述】:
我正在尝试将一些不连续的列(例如 A 列、C 列、E 列)复制到一个动态数组中。但是,当使用 VBA Application.Union 方法时,似乎只复制了连续的范围,留下了不连续的范围。
我已尝试复制连续列(A、B、C、D、E),结果按预期工作,但非连续列(A、C、E)没有。
有人可以帮助我吗?谢谢。
Sub TestFunction()
Dim TempArray() As Variant
Dim rngUnion As Range
With ThisWorkbook.Worksheets(2)
Set rngUnion = Application.Union(.Range("A1:A10"), .Range("C1:C10"), .Range("E1:E10"))
End With
TempArray = rngUnion
End Sub
【问题讨论】:
-
你试过
Hide-ing你想跳过的列吗?? -
@Gary'sStudent 我也尝试过隐藏这些列。但是,它没有用。
-
在获取二维数组的值时,只能使用连续的矩形范围。如果你想这样做,你需要从各个区域构建阵列。
-
我不知道为什么 - 这将是开发人员的问题
-
如果我不得不猜测,当从非连续范围创建二维数组时,无法推断用户的 intent :如果我选择两个矩形范围无法确定我的意思是让它们在结果数组中“并排”与“从上到下”(例如,两个 4x4 范围>>一个 4x8 数组,还是一个 8x4 数组?)跨度>