Excel精英培训网

 找回密码
 注册
数据透视表40+个常用小技巧,让你一次学会!
查看: 15588|回复: 13

宏过程内显示出该宏的名称

[复制链接]
发表于 2011-4-6 18:21 | 显示全部楼层 |阅读模式
5学分
如题
如果某个模块里面的宏有
sub aaaa()
...
end sub

希望在该过程中显示出该过程的名称 即msgbox “aaa”

如果宏的名称是 sub 请教
则msgbox 弹出的是 msgbox “请教”

谢谢解答

excel精英培训的微信平台,每天都会发送excel学习教程和资料。扫一扫明天就可以收到新教程
发表于 2011-4-6 18:54 | 显示全部楼层
对啊就用msgbox啊

点评

msgbox 后面怎么写呢?用什么表示当前过程宏的名称呢??  发表于 2011-4-6 18:57
回复

使用道具 举报

发表于 2011-4-6 19:04 | 显示全部楼层
回复

使用道具 举报

发表于 2011-4-6 19:34 | 显示全部楼层
本帖最后由 豆丁 于 2011-4-6 19:53 编辑

见附件里的代码

游客,如果您要查看本帖隐藏内容请回复

评分

参与人数 1 +6 收起 理由
xdwy81129 + 6 谢谢解答,只是不知道怎么用,试验是失败的

查看全部评分

回复

使用道具 举报

发表于 2011-4-6 20:05 | 显示全部楼层
没怎么看懂啊
回复

使用道具 举报

发表于 2011-4-6 20:15 | 显示全部楼层
就是显示过程名
回复

使用道具 举报

发表于 2011-4-6 20:55 | 显示全部楼层
本帖最后由 fjmxwrs 于 2011-4-6 20:59 编辑

呵呵,学习下,既然知道是在哪个宏下运行的,
直接
Sub aa()
    MsgBox aa
End Sub

Sub 快来()
    MsgBox 快来
End Sub

学习了豆丁老师的代码,不对呀,我新建一个宏,运行结果还是你原来的宏名。



点评

就像想在方便下更简单  发表于 2011-4-6 23:29
回复

使用道具 举报

 楼主| 发表于 2011-4-6 23:28 | 显示全部楼层
回复 豆丁 的帖子

不对呀,不能适用一切的过程呀
fly_pic.jpg
回复

使用道具 举报

发表于 2011-4-7 10:02 | 显示全部楼层
要这样动态取得过程的名称感觉比较难,因为代码很难知道程序运行到了哪一行


Function GetProcName() As String
' 只适用于从VBE里直接运行,得到的是光标所在位置的过程名称
    Const vbext_pk_Proc As Long = 0    ' 也可以改为引用Microoft Visual Basic for Application Extensibility x.x
    Dim m As Long, n As Long, x As Long, y As Long
    Application.VBE.ActiveCodePane.GetSelection m, n, x, y  ' 取得选定区(光标所在)
    GetProcName = Application.VBE.ActiveCodePane.CodeModule.ProcOfLine(m, vbext_pk_Proc)  '取得过程名称
End Function

Sub Test1()
    MsgBox GetProcName
End Sub

Sub Test2()
    MsgBox GetProcName
End Sub
Sub Test3()
    MsgBox GetProcName
End Sub

评分

参与人数 1 +6 收起 理由
xdwy81129 + 6 谢谢给出部分解答

查看全部评分

回复

使用道具 举报

 楼主| 发表于 2011-4-8 00:51 | 显示全部楼层
回复 吕?布 的帖子

这个适用的是光标所在的过程,希望可以做到适用从按钮执行的所有任何宏。

谢谢吕布的耐心解答,再期待看看
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|Archiver|Excel精英培训 ( 豫ICP备11015029号 )

GMT+8, 2024-4-29 22:55 , Processed in 0.334073 second(s), 10 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表