【发布时间】:2022-08-18 08:31:57
【问题描述】:
使用联合连接范围时,我在创建变体数组时遇到了一些麻烦。
如果我选择其中一个范围,则变量数组将正常工作,但是当我合并时,我只收到行尺寸而不是列尺寸。
例如,
Sub arrTest()
\'Declare varbs
Dim ws As Worksheet
Dim myArr() As Variant
Dim lRow As Integer
Dim myRng As Range
\'Assign varbs
Set ws = ThisWorkbook.Worksheets(\"Sheet1\")
With ws
lRow = .Cells(Rows.count, \"C\").End(xlUp).row
Set myRng = Application.Union(.Range(\"G3:G\" & lRow), .Range(\"J3:O\" & lRow), .Range(\"AD3:AE\" & lRow), .Range(\"AI3:AI\" & lRow))
myArr = myRng.Value2
End With
将返回一个变体 我的Arr(1, 1) 我的 (2, 1) 我的 (1, 3)
但是,如果我只是选择联合中的一个范围,例如:
Sub arrTest()
\'Declare varbs
Dim ws As Worksheet
Dim myArr() As Variant
Dim lRow As Integer
Dim myRng As Range
\'Assign varbs
Set ws = ThisWorkbook.Worksheets(\"Sheet1\")
With ws
lRow = .Cells(Rows.count, \"C\").End(xlUp).row
Set myRng = .Range(\"J3:O\" & lRow)
myArr = myRng.Value2
End With
我正确地得到以下 我的Arr(1, 1) 我的 (1, 2) 我的 (1, 3) ETC
对正确返回列尺寸有什么帮助而不必遍历工作表吗?
-
您不能将不连续的范围读入数组 - 它只是行不通。
-
@TimWilliams 对解决方法的任何建议,或者更好地重新排序列以使它们连续?
-
您可以遍历范围并填充数组
-
@TimWilliams 我目前遍历工作表中的范围以填充数组,但希望通过将数组作为一个整体填充来加快此过程
标签: excel vba multidimensional-array