我正在尝试确保构建的数组具有我期望的值。
应该将Cards数组填充到Shoe数组中。
当我计算数组的值时,我得到了预期的104,但是当我将值粘贴到Excel工作表中时,仅填充了13个单元格。
有没有一种简单的方法来检查数组的内容?
Sub CreateShoe()
Dim decks As Integer
decks = 2
Dim Cards As Variant
Dim shoe As Variant
Dim cnt As Integer
Cards = Array(2, 3, 4, 5, 6, 7, 8, 9, 10, 10, 10, 10, "A")
ReDim shoe(1 To 52 * decks)
cnt = 1
For i = LBound(Cards) To UBound(Cards)
shoe(cnt) = Cards(i)
cnt = cnt + 1
Next i
Range("A1:A99") = WorksheetFunction.Transpose(shoe)
End Sub
最佳答案
您可以使用Join
:
Sub test()
Dim Directions As Variant
Directions = Array("North", "South", "East", "West")
Debug.Print Join(Directions, ", ")
End Sub
哪些印刷品
North, South, East, West
在立即窗口中。另外,如果您使用调试器单步执行代码,则可以在“本地窗口”中展开数组的名称并检查各个元素。
编辑时:在最后一点上扩展。如果在VBA编辑器中选择
View -> Locals Window
并在将shoe
发送到工作表的代码行之前设置断点(通过单击行的左侧),则应该看到以下内容:如果运行sub,它将进入中断模式,如下所示:
然后,如果在
shoe
上展开,则会看到:这足以表明您没有在索引13之后初始化
shoe
。其他人已经发布了显示此bug来源的答案-但这确实是一项重要技能,能够根据您的问题检查的值。数组。在“编辑”中,
Join
不适用于既不是Variant
也不是String
的数组。如果您有一个声明为例如的数组Dim Directions(1 to 4) as Integer
您可以先通过以下功能运行它:
Function ToVariant(v As Variant) As Variant
Dim temp As Variant
Dim i As Long
ReDim temp(LBound(v) To UBound(v))
For i = LBound(v) To UBound(v)
temp(i) = v(i)
Next i
ToVariant = temp
End Function
然后
Join(ToVariant(Directions), ", ")
将按预期工作。