我一直犯同样的错误,我不知道它是什么。每次我做一个处理数组的 For-Loop 时(通常,尝试读取一个数组并将值写入第二个数组),它只从第一个数组中获取最后一个值并将其写入第二个数组的每个插槽中大批。
这是我正在研究的最简单/最短的副本。它应该从 A1:A10 中读取值并将它们写入 B1:K1。
Sub Problem1()
Dim a(1 To 10) As Single
Dim b(1, 10) As Single
Dim i As Integer
For i = 1 To 10
a(i) = Range("A" + CStr(i)).Value
Next i
For i = 1 To 10
b(1, i) = a(i)
Next i
Range("B1:K1") = b(1, 10)
End Sub
最佳答案
Range("B1:K1") = b(1, 10)
这只会复制一个数组元素。
您可以执行以下操作:
Range("B1:K1").Value = Application.WorksheetFunction _
.Transpose(Range("A1:A10"))
不幸的是,要将原始值存储在数组中(使用我的方法)需要将其声明为 Variant:
Sub Problem1()
Dim a As Variant
a = Range("A1:A10")
Range("B1:K1") = Application.WorksheetFunction.Transpose(a)
End Sub
如果您仍想同时使用这两个数组:
Sub Problem1()
Dim a As Variant
Dim b(1 To 10) As Single
Dim i As Integer
a = Range("A1:A10")
For i = 1 To 10
b(i) = a(i, 1)
Next i
Range("B1:K1") = b
End Sub
关于arrays - For-Next 循环和数组 - VBA,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17256563/