我在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
我如何轻松快捷地实现这一目标?预先谢谢你。
答案 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