【发布时间】:2020-03-20 16:36:47
【问题描述】:
我正在尝试使用 2D 数组填充 2D 范围。
目前我有这个:
Sub populate()
Dim ws As Worksheet
Set ws = ThisWorkbook.Worksheets("Sheet1")
Dim Rows(2) As Variant
Rows(0) = [{1, 2, 3}]
Rows(1) = [{4, 5, 6}]
Rows(2) = [{7, 8, 9}]
With ws
.Range(.Cells(1, 1), .Cells(3, 3)).Value = Rows
End With
End Sub
我没有收到任何错误等,但运行宏后范围仍然为空。
最奇怪的是,当我走的时候,我得到了正确的输出:
With ws
.Range(.Cells(1, 1), .Cells(3, 3)).Value = Application.Transpose(Application.transpose(Rows))
End With
我浏览了许多文章和 Microsoft 文档,但没有任何东西可以解决我的问题。
【问题讨论】:
-
Rows()是一维数组,其元素是一维数组。你需要得到一个真正的二维数组 -
声明
Dim Rows(2, 0) As Variant -
您已经有了一个工作选项,所以我不太清楚您在寻找什么?您可以简单地创建一个二维数组:
Dim Rows() As Variant: Rows() = [{1, 2, 3; 4, 5, 6; 7, 8, 9}] -
如果你想使用
Evaluate,那么不妨试试:Rows(0,0) = [Row(1:3)]、Rows(1,0) = [Row(4:6)]和Rows(2,0) = [Row(7:9)]。那是你想要做的吗?检查语言环境变量窗口以查看所有不同选项对您的数组的作用。 -
使用我的最后一条评论,您可以通过
Rows(0, 0)(1, 1) = "Your value"添加一个值,这将更改您的 2D 数组的第一个元素中第一个 2D 数组的第一个元素的值 =).. .....ehh,是的,正确的哈哈