朋友们好,今日我们讲解VBA代码解决方案的第41讲,如何对MsgBox对话框进行排版,从而达到美观的效果。
如果在消息框中显示的字符串很长,比如是一段多行的文字内容,为了达到美观的效果,需要首字缩进,并将各行分隔开来,我们先看下面的几个符号,分别表示了不同的含义,是非常有实用意义的。如:vbCrLf,Chr(13) + Chr(10)表示回车符与换行符结合;vbCr,Chr(13)表示回车符;vbLf,Chr(10)表示换行符。
![89823a14246dc0d6f132e3265f261267.png](https://i-blog.csdnimg.cn/blog_migrate/1b3d9b68c71d401a68bf5d3d9c66e2c9.jpeg)
另外,在用消息框显示多行多列的数据时,如果只用换行符(Chr(10))等进行换行,而数据列没有对齐,会使显示的信息显得杂乱无章,缺乏可读性,为了达到消息框中显示信息各列对齐的效果,在使用换行符(Chr(10))等进行换行的基础上,还需要使用制表符(Chr(9))或常数vbTab,对数据列进行分隔,使之排列整齐。
如下面代码所示。
Sub MyOutmsbox()
Dim mysMsg As String
Dim iRow As Integer
Dim iCom As Integer
For iRow = 1 To 11
For iCom = 1 To 5
mysMsg = mysMsg & Cells(iRow, iCom) & Chr(9)
Next
mysMsg = mysMsg & Chr(10)
Next
MsgBox mysMsg
End Sub
代码解析:MyOutmsbox过程使用两层循环读取当前工作表中A1到E11单元格的内容,并用消息框显示出来。
第7行代码,iCom循环中在把逐列读取的单元格内容赋给变量mysMsg时插入一个制表符(Chr(9)),对列进行分隔。
第9行代码,iRow循环中在读取下一行单元格内容赋给变量mysMsg时插入一个换行符(Chr(10)),对行进行换行。
运行MyOutmsbox过程将用消息框显示当前工作表中A1至E11单元格区域中的内容,并排列整齐。
看下面的代码窗口:
![24dbac17c5fbfa957d37430e543c983b.png](https://i-blog.csdnimg.cn/blog_migrate/86c3106f6fa24b34b972ae273597cbc7.jpeg)
再看看运行后的窗口:
![7f85840e12600d15598b7af6522b6979.png](https://i-blog.csdnimg.cn/blog_migrate/cc082ae96c99c8a5cb91a1b18657addb.jpeg)
这样在运行后弹出的窗口就非常的漂亮了。
今日内容回向:
1 Chr(13) 是什么意义?
2 Chr(10) 是什么意义?
3 Chr(9) 是什么意义?