如何在Visual Basic中使用消息框显示变量的所有值?

时间:2019-04-25 14:12:33

标签: vba

我在Sub中创建了一个矩阵。我想知道,是否有任何快速的方法可以在消息框中绘制此矩阵的值?

代码如下:

Dim A() As Variant

ReDim A(5, 5)
   For i = 1 To 5
       For j = 1 To 5
        A(i, j) = 1
       Next j
 Next i

尝试绘制:

MsgBox A

我如何轻松快捷地实现这一目标?预先谢谢你。

2 个答案:

答案 0 :(得分:2)

MsgBox函数的String参数接受一个Prompt参数。 A是一个二维Variant数组,包含25个Variant/Integer值和11个Variant/Empty值-隐式大小的数组的隐含下限为0,除非您有{ {1}}已指定;我建议使用显式数组范围Option Base 1代替了,但这不是一个错误。

VBA不知道您想如何将数组表示为字符串。在.NET中,ReDim A(1 To 5, 1 To 5)数组的默认字符串表示如下所示:int,因为默认的int[]实现只是产生对象数据类型的名称:其他语言可能具有其他默认值数组的字符串表示形式,但最重要的是,您需要自己实现。

也许您希望它用制表符分隔?还是用逗号分隔?

容易吗?迭代数组并连接字符串:

ToString

快?使用StringBuilder

Dim s As String
For i = LBound(A, 1) To UBound(A, 1)
    For j = LBound(A, 2) To UBound(A, 2)
        s = s & vbTab & A(i, j)
    Next
    s = s & vbNewLine
Next
MsgBox s

喜欢吗?取每个With New StringBuilder For i = LBound(A, 1) To UBound(A, 1) For j = LBound(A, 2) To UBound(A, 2) .Append A(i, j) & vbTab Next .Append vbNewLine Next MsgBox .ToString End With 元素的Slice,使用i函数将每个“切片”分割成一个定界字符串(指定所需的分隔符),然后将每个定界字符串附加到末尾字符串表示形式。

答案 1 :(得分:1)

制作一个数组字符串并将其绘制出来,尝试:

Sub tst()
Dim A() As Variant
Dim aa As String

ReDim A(5, 5)
   For i = LBound(A, 1) To UBound(A, 1)
       For j = LBound(A, 2) To UBound(A, 2)
        A(i, j) = 1
        aa = aa & A(i, j) & vbTab
       Next j
        aa = aa & vbCrLf
 Next i
MsgBox aa
End Sub