cdz45380 发表于 2016-4-12 13:32:48

EXCEL VBA 使用msgbox制作帮助文件对话框

假设你的表格有一些帮助内容 这些内容一般放于比较后的列 比如BB列
假设存放BB列 从BB2开始一直往下存放 每行存放一句
先在BB1=SUM(IF(($BB$2:$BB$100)"",1,0)) 三键按下执行数组公式 返回该区域非空单元格[即有数据]的数量
这个区域要求数据之间不能有空单元格 BB100的行数视实际情况可增减 尽量取大一点
创建一个按钮 指定宏 代码如下
Option Explicit
Sub 总览_各表共性()
Dim i
Dim str1
str1 = "此内容存于BB列"
For i = 2 To 1 + Range("bb5").Value
str1 = str1 & vbNewLine & vbNewLine & Range("bb" & i).Value
Next
MsgBox str1
End Sub
以后只要按下这个按钮 你放在后面列的帮助内容就会以对话框形式显示出来
代码中的行列可以按实际情况进行修改
结果如下图

user_alwykspv 发表于 2016-4-12 17:20:48

以前傻乎乎的 不懂得用for来连接字符串内容 有多少行 就用多少个range().value 不是一般痛苦

user_lgjdn 发表于 2016-4-12 17:27:16

假设BB2:BB100中间有空行且空行间距不定,显示出来的内容岂不很难看?
另:=SUM(IF(($bb$2:$bb$100)<>&quot;&quot;,1,0))
完全可以:
=SUM(n(bb2:bb100<>&quot;&quot;))
或者直接用COUNTA(bb2:bb100)即可。
但如果中间有不确定的空行,你的公式、代码都麻烦了。

狂舞飞狐 发表于 2016-4-12 17:33:16

解决办法:
假设BB2开始输入帮助内容,且不确定此后空行,则直接用代码:
[*]Sub Hlp()
[*]    Dim cH$
[*]    nR=.End(xlUp).Row
[*]    If nR<2 Then Exit sub
[*]    For i=2 To nR
[*]      If Cells(i,&quot;bb&quot;)<>&quot;&quot; Then cH=cH & Cells(i,&quot;bb&quot;) & Chr(10)
[*]    Next
[*]    If cH<>&quot;&quot; Then MsgBox cHEnd Sub

复制代码

susan2123 发表于 2016-4-12 18:08:12

刚学VBA和数组没几天 不要要求那么高啊 对于数据不是那么庞大的 能实现功能就不错了 :)

jiaoya 发表于 2016-4-12 18:11:00

高人 你的比较高深 我的比较通俗 适合初学者理解 你的代码 有几行 我还看不懂 哈哈 别见怪 继续学习 谢谢
页: [1]
查看完整版本: EXCEL VBA 使用msgbox制作帮助文件对话框