我试图确保我构建的数组具有我期望的值。
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
Run Code Online (Sandbox Code Playgroud)
您可以使用Join:
Sub test()
Dim Directions As Variant
Directions = Array("North", "South", "East", "West")
Debug.Print Join(Directions, ", ")
End Sub
Run Code Online (Sandbox Code Playgroud)
哪个打印
North, South, East, West
Run Code Online (Sandbox Code Playgroud)
在立即窗口中。此外,如果您使用调试器单步调试代码,那么在“局部变量”窗口中,您可以展开数组的名称并检查各个元素。
编辑时:扩展最后一点。如果在 VBA 编辑器中,您View -> Locals Window在发送到工作表的代码行之前选择并设置断点(通过单击行的左侧)shoe,您应该会看到类似以下内容的内容:
如果你运行子程序,它将进入中断模式,如下所示:
然后如果你继续扩展shoe你会看到:
这足以表明您没有在索引 13 之后进行初始化。其他人已经发布了显示此shoe错误来源的答案- 但这确实是一项重要的技能,能够按照您的问题要求检查数组的值。
On Edit Join不能很好地处理既不是 也不Variant是 的数组String。如果你有一个像这样声明的数组
Dim Directions(1 to 4) as Integer
Run Code Online (Sandbox Code Playgroud)
您可以首先通过以下函数运行它:
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
Run Code Online (Sandbox Code Playgroud)
然后Join(ToVariant(Directions), ", ")将按预期工作。
| 归档时间: |
|
| 查看次数: |
13881 次 |
| 最近记录: |