Arrays 可以使用联合范围定义数组吗?

Arrays 可以使用联合范围定义数组吗?,arrays,excel,vba,union,Arrays,Excel,Vba,Union,我试图使用来自两个独立列的数据定义一个二维数组。代码当前仅将我的数组定义为第一列(range1),忽略第二列(range2)。这是由于我自己的错误,还是我可以不使用Unionized(这是正确的术语吗?)范围来定义数组 Sub define_array() Dim FTSE100() As Variant Dim wsh As Worksheet Dim range1 As Range Dim range2 As Range Dim finalrange As Range Dim a

我试图使用来自两个独立列的数据定义一个二维数组。代码当前仅将我的数组定义为第一列(range1),忽略第二列(range2)。这是由于我自己的错误,还是我可以不使用Unionized(这是正确的术语吗?)范围来定义数组

 Sub define_array()

Dim FTSE100() As Variant

Dim wsh As Worksheet

Dim range1 As Range
Dim range2 As Range
Dim finalrange As Range

Dim a As Integer
Dim finalrow As Integer

' define array

Set wsh = Sheet2
wsh.Activate

finalrow = Range("a1").End(xlDown).row

Set range1 = Range(Cells(1, 1), Cells(finalrow, 1))
Set range2 = Range(Cells(1, 5), Cells(finalrow, 5))
Set finalrange = Union(range1, range2)

' FTSE100 = finalrange

' Sheet15.Range("A:B") = FTSE 100

' Original code ended here

ReDim FTSE100(1 To finalrange.Areas.Count)

For a = 1 To finalrange.Areas.Count
FTSE100(a) = finalrange.Areas(a)
Next

With Sheet15.Range("A:B")
For a = 1 To .Columns.Count
.Columns(a).Resize(UBound(FTSE100(a))).Value = FTSE100(a)
Next
End With

End Sub

这似乎已经完成了,谢谢您的帮助。

对于非连续范围,您不能这样做

您可以这样做:

ReDim FTSE100(1 To finalRange.Areas.Count)

For a = 1 To finalRange.Areas.Count
    FTSE100(a) = finalRange.Areas(a)
Next
您必须为…执行类似的
。。。下一步
循环写入值

With Sheet15.Range("A:B")
For a = 1 To .Columns.Count
    .Columns(a).Resize(UBound(FTSE100(a))).Value = FTSE100(a)
Next
End With
但现在我明白了,你的问题其实比这更简单:你只想把值从一个未电离的范围复制到另一个工作表。这很简单,不需要中间数组变量
FTSE100

Set range1 = Range(Cells(1, 1), Cells(finalrow, 1))
Set range2 = Range(Cells(1, 5), Cells(finalrow, 5))

Sheet15.Range("A:A") = range1
Sheet15.Range("B:B") = range2

我试过了,它没有抛出错误,但似乎也没有定义数组。现在,当我运行它时,表15中没有显示任何内容,尝试从数组中获取msgbox值都会抛出错误。然后,您没有正确尝试。请修改您的Q,以显示您当前试图实现的代码,我将看到问题的症结所在:)您也将无法以这种方式向Sheet15写信。让我修改我的答案,因为我刚刚意识到您认为您的问题是,这实际上不是你的问题。我该如何把它写在工作表上,以检查它是否被正确定义?