ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

搜索
EH技术汇-专业的职场技能充电站 妙哉!函数段子手趣味讲函数 Excel服务器-会Excel,做管理系统 Excel Home精品图文教程库
HR薪酬管理数字化实战 Excel 2021函数公式学习大典 Excel数据透视表实战秘技 打造核心竞争力的职场宝典
300集Office 2010微视频教程 数据工作者的案头书 免费直播课集锦 ExcelHome出品 - VBA代码宝免费下载
用ChatGPT与VBA一键搞定Excel WPS表格从入门到精通 Excel VBA经典代码实践指南
查看: 1964|回复: 19

[求助] 求助vba把模块名做参数变量

[复制链接]

TA的精华主题

TA的得分主题

发表于 2019-9-16 10:02 | 显示全部楼层 |阅读模式
vba把模块名做参数变量

比如有
sub aa()'是第一个模块,名称=aa

end sub

现在怎么写公共变量,或参数引用sub aa()?
sub bb()

call aa''这可以
现在问题aa 怎么知道父程序bb,a,b,c,d...的模块名,序号?name  , codename,?
end sub谢谢
name=bb,codename=1??


编辑一下:
For Each m In ThisWorkbook.VBProject.VBComponents
  i = i + 1
  Cells(i, 1) = m.Type‘’m 不知道是哪个模块,现在需要m 是对应模块bb,a,b,c,d...,可是如何对应上?
  Cells(i, 2) = m.Name
Next
因为求bb,结果会是bb,a,b,c,d..  求a,结果会是bb,a,b,c,d.. 求b,结果会是bb,a,b,c,d..所以不好用,应该求bb,结果是bb   求a,结果会是a 求b,结果会是b..

类似这代码,问题他不知道当前的父模块bb,a,b,c,d的 序号i是什么?i应该等于自己模块的序号,并且序号很多而且不一定都全,比如序号1-100,可是可能没有模块2,模块35,36,因为工作簿自己会删除某些模块其余的保存,
要知道bb,a,b,c,d的 i值,怎么求,谢谢


前面帖子看不清重发一下,谢谢侠圣版主大家

cel-.zip

11.09 KB, 下载次数: 4

TA的精华主题

TA的得分主题

 楼主| 发表于 2019-9-16 10:25 | 显示全部楼层
在新帖回复一下谢谢了,可以吗谢谢回复我的

TA的精华主题

TA的得分主题

 楼主| 发表于 2019-9-16 10:33 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
??您看了那个 m只是集合呀,一下就是全部的bb,a,b,c,d,这些主模块父模块,
需要【调用aa模块,或公共变量】就可以在【哪个主模块】运行就得出主模块其 - type,name,codename,
bb要得出type=? ,name=bb ,codename=1
a要得出type=? ,name=a ,codename=3
这样,期盼你回复

TA的精华主题

TA的得分主题

 楼主| 发表于 2019-9-16 10:36 | 显示全部楼层
Sub bb()
proc = "bb" ''proc=bb???怎么求bb,a,b,c,d...
Call aa
MsgBox temp

End Sub

Sub a()
proc = "bb" ''proc=bb???怎么求bb,a,b,c,d...
Call aa
MsgBox temp

End Sub

Sub b()
proc = "bb" ''proc=bb???怎么求bb,a,b,c,d...
Call aa
MsgBox temp

End Sub

-----
Public proc, temp  'proc=当前程序,temp=父程序
Sub aa() 'proc="aa"
'子程序
temp = proc
Application.Run proc
proc = temp
MsgBox "temp.name= " & temp.Name & " ,temp.codename= " & temp.CodeName
End Sub
请问怎么实现?

TA的精华主题

TA的得分主题

 楼主| 发表于 2019-9-16 12:03 来自手机 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
求助大家谢谢,

TA的精华主题

TA的得分主题

发表于 2019-9-16 12:48 | 显示全部楼层

TA的精华主题

TA的得分主题

发表于 2019-9-16 12:59 | 显示全部楼层
不知道有没有理解错误,以下代码请参考。
  1. Sub aa(Subname$, id&)
  2. MsgBox "Parent's name: " & Subname & Chr(10) & "Parent's codename: " & id
  3. End Sub

  4. Sub bb()
  5. Call aa("bb", 3)
  6. End Sub

  7. Sub a()
  8. Call aa("a", 4)
  9. End Sub

  10. Sub b()
  11. Call aa("b", 5)
  12. End Sub
复制代码

TA的精华主题

TA的得分主题

 楼主| 发表于 2019-9-16 13:09 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
你好在呀,可是参数都要手写,很多父模块怎么办
Call aa("bb", 3)
类似括号里的参数需要语句给出才行的,
是怎么给出呀,公共的变量还是调用类似aa模块,

TA的精华主题

TA的得分主题

 楼主| 发表于 2019-9-16 13:11 | 显示全部楼层
父程序bb,a,b,c,d等等,如果可以有变量对应得到括号里面的两个参数吗

TA的精华主题

TA的得分主题

发表于 2019-9-16 13:21 | 显示全部楼层
消息看到了,你的问题上个帖子已经答复你了。
明确的说你的思路是错的,没有必要这样使用模块。函数(方法)加上公用标识符在整个工程都可以直接调用
比如
Public Function 函数1()
Public Sub 方法1()
在使用模块时需要先了解这些模块的函数方法能做什么,只有了解了才会去使用,间接的调用方式不可取,越往后越累。
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

关闭

最新热点上一条 /1 下一条

手机版|关于我们|联系我们|ExcelHome

GMT+8, 2024-4-24 02:58 , Processed in 0.046001 second(s), 11 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

沪公网安备 31011702000001号 沪ICP备11019229号-2

本论坛言论纯属发表者个人意见,任何违反国家相关法律的言论,本站将协助国家相关部门追究发言者责任!     本站特聘法律顾问:李志群律师

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