检查数组 VBA 的值

Fub*_*dis 2 arrays excel vba

我试图确保我构建的数组具有我期望的值。

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)

Joh*_*man 6

您可以使用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), ", ")将按预期工作。