不同工作表怎么用一个宏,怎样依次运行不同工作表中的宏

发布时间:2024-06-29 14:04:57 访问次数:

你的需求比较偏门,网上资料很少,花了两个小时终于做出来了

因为需要获取VBA工程中的数据,必须在excel选项-信任中心-信任中心设置中勾选“信任对VBA工程对象模型的访问”

代码如下

Sub?依次运行工作表中的宏()

Dim?subline?As?Integer

Dim?strline?As?String

Dim?subname?As?String

For?i?=?1?To?Sheets.Count

subline?=?ThisWorkbook.VBProject.VBComponents(Sheets(i).Name).CodeModule.countoflines?'获取工作表模块代码行数

If?subline?>?0?Then?'行数大于0时

For?L?=?1?To?subline?'遍历代码行

strline?=?ThisWorkbook.VBProject.VBComponents(Sheets(i).Name).CodeModule.Lines(L,?1)?'获取每行代码

With?CreateObject("VBScript.RegExp")?'使用正则表达式判断代码是否为*Sub?*()形式,如果是则调用

.Global?=?True

.Pattern?=?".*Sub\s(.*)\(\)"

If?.test(strline)?Then

subname?=?Sheets(i).Name?&?"."?&?.Replace(strline,?"$1")

Application.Run?subname

End?If

End?With

Next

End?If

Next?i

End?Sub

真为自己不值

用excel中的VBA实现排列组合的方法:

例如:

用1-12这12个数字,从中选取6个数字做无顺序的组合数据,即一共为C(12,6)=924组数据,一组数据显示一行,如,第一组数据为“1 2 3 4 5 6”,第二组数据在第二行中显示“1 2 3 4 5 7”。

编写如下即可: