从2D变体中将第二维写入Range,而不在VBA中循环

我有一个variablesvariables,并传递如下的范围值。

Option Base 1 Dim varEmployees As Variant varEmployees = Range("A1:B5").Value 

这个2D变体现在在第一维中具有员工ID,在第二维中具有员工名称。 所以我们得到如下的东西。

 varEmployees(1,1) = 1234 varEmployees(1,2) = John Doe varEmployees(2,1) = 5678 varEmployees(2,2) = Jane Smith varEmployees(3,1) = 9012 varEmployees(3,2) = Mary Major varEmployees(4,1) = 3456 varEmployees(4,2) = Judy Stiles varEmployees(5,1) = 7890 varEmployees(5,2) = Richard Miles 

我想写第二维只回到一个范围,而不使用循环,但是当我使用下面的代码…

 Range("D1:D5") = varEmployees 

我只得到第一维,如实际结果下所示,但我想要的是我的预期结果(只有第二维)。

 Actual Results Desired Results -------------- --------------- 1234 John Doe 5678 Jane Smith 9012 Mary Major 3456 Judy Stiles 7890 Richard Miles 

有没有办法做到这一点,或者有一个关于变种数组的规则,我不知道。

使用someRange.Value获得的Variant数组总是基于1的,所以你并不需要Option Base 1

这是一个你想要的方法:

 Sub Test() Dim a As Variant, b As Variant a = Range("A1:B5").Value 'get a specific column b = Application.Index(a, 0, 2) '0="all rows" With Range("D10") .Resize(UBound(b), 1).Value = b End With 'get a specific row b = Application.Index(a, 2, 0) '0="all cols" With Range("D21") .Resize(1, UBound(b)).Value = b End With End Sub