我遇到的东西我猜是Excel中的一个讨厌的错误,但不确定。
奇怪的是,尽管在VBA for Excel中开发了10年,但我以前从未见过这个。在Excel 2010和2013中用于PC的工作方式相同。
如何重现:
运行以下宏:
Public Sub test()
Dim rng As Range
Dim v As Variant
Dim i As Long
i = 1
ReDim v(1 To i, 1 To 6)
v(1, 1) = "x"
v(1, 2) = "x1"
v(1, 3) = "x2"
v(1, 4) = "x3"
v(1, 5) = "x4"
v(1, 6) = "x5"
Set rng = Sheet1.Range("A9:F9")
If i = 2 Then
v(2, 1) = "y"
v(2, 2) = "y1"
v(2, 3) = "y2"
v(2, 4) = "y3"
v(2, 5) = "y4"
v(2, 6) = "y5"
Set rng = Sheet1.Range("A9:F10")
End If
rng.Value = v
End Sub
现在发生的事情如下,取决于i的值。
I = 1:
A9="x"
B9="x1"
C9=unchanged
D9:F9="x"
I = 2:
A9="x"
B9="x1"
C9=unchanged
D9="x"
E9="x3"
F9="#VALUE"
(第10行与9类似,但改为使用“y”)
i = 1至少似乎在第一个隐藏列之后重复第一个值。 对于i = 2,我不知道它在做什么。
从我的观点来看,这看起来非常 错误。