如何在VBA中的立即窗口中打印二维数组?

Qbi*_*bik 14 arrays vba immediate-window

如何在VBA中的立即窗口中打印二维数组?这样做是否存在任何通用方法?在立即窗口中每行绘制一行数组的一些方法可以解决这个问题,因为那时只需要为每行数组循环这个代码.

joh*_*why 16

如果这是出于调试目的,在程序执行期间编写宏来查看数组的内容是不方便的.甚至可能会导致问题.

对于程序执行期间的调试,您需要一个可以在所有VB项目中使用的无代码方法来监视阵列的内容.

  1. 在VBA IDE中,单击"查看"菜单>"本地窗口"
  2. 在"本地"窗格中,找到阵列名称. 在此输入图像描述
  3. 展开节点以查找值.根据阵列的类型,节点会有所不同.

在此示例中,"aLookList"是变体数组."Value2"下的值来自一个范围.

在此输入图像描述

在此输入图像描述

这里的另一个答案建议使用Watch窗格.这与我的回答类似,但是海报没有解释你可以通过简单地将数组名称添加到Watch来监视整个阵列(所有单元格).然后,向下钻取节点.Locals Window在Watch Window上的优势在于,在Locals窗格中,您不必手动将数组添加到窗格,它已经存在.所以它的努力要少一些.


Ale*_* K. 10

不,你要么需要;

  • 创建并调用一个循环并将其打印到调试窗口的函数.
  • 如果这是用于调试,请右键单击IDE中的变量和"添加监视",这将显示一个窗口,该窗口将跟踪数组值的更改并在命中断点时显示其内容.


小智 9

我做了一个简单的循环来做任何人的参考:

Sub WriteArrayToImmediateWindow(arrSubA As Variant)

Dim rowString As String
Dim iSubA As Long
Dim jSubA As Long

rowString = ""

Debug.Print
Debug.Print
Debug.Print "The array is: "
For iSubA = 1 To UBound(arrSubA, 1)
    rowString = arrSubA(iSubA, 1)
    For jSubA = 2 To UBound(arrSubA, 2)
        rowString = rowString & "," & arrSubA(iSubA, jSubA)
    Next jSubA
    Debug.Print rowString
Next iSubA

End Sub
Run Code Online (Sandbox Code Playgroud)

  • 出于程序执行期间的调试目的,运行宏是不切实际的。甚至可能会导致问题。对于调试,您需要一种无需代码的方法来监视数组内容。请参阅下面的我的无代码方法。 (4认同)