不同工作表怎么用一个宏,怎样依次运行不同工作表中的宏
你的需求比较偏门,网上资料很少,花了两个小时终于做出来了
因为需要获取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”。
编写如下即可: