假设在Excel工作簿中有10个工作表,并且Sheet2到Sheet10的格式是唯一的。
假设我记录了9个唯一的宏。
Sheet1是放置9个按钮的中心位置。每个记录的宏都有一个按钮,这样当用户转到工作表1并点击名为"工作表2"的按钮时它将针对表2运行表2的宏,即使用户在活动的表1上。或者如果用户点击"sheet 10"按钮它对工作表10运行已记录的宏,等等。
下面是其中一个宏的简化版本。
Sub Sheet2()
'
' Sheet2 Macro
'
'
End Sub
Sub Sheet2Macro()
'
' Sheet2Macro Macro
'
'
Range("A2:C2").Select
Selection.AutoFill Destination:=Range("A2:C10"), Type:=xlFillDefault
Range("A2:C10").Select
End Sub
我在网上找到了这段代码,我添加在顶部,它运行成功,但只在活动表:
Dim WkSheets As Variant, SheetName As Variant, ws As Worksheet
'** SET The Sheet Names - MUST Reflect Each Sheet Name Exactly!
WkSheets = Array("Sheet 2")
For Each SheetName In WkSheets
'MsgBox SheetName
For Each ws In ActiveWorkbook.Worksheets
If ws.Name = SheetName Then
'Your Code Here
如果您正在使用您记录的9个唯一的宏,这些宏将专门为它们被记录的工作表设置,然后您只需将代码绑定在每个特定的按钮被单击时调用。如前所述,了解它们是表单控件还是ActiveX控件会很有帮助,但您可以将按钮中的文本更改为"工作表2按钮";例如,与该按钮绑定的代码可能是
之类的内容Private Sub Sheet2Button_Click()
Call Sheet2Macro
End Sub
所以从那里,当你点击按钮说工作表2按钮,它将调用Sheet2Macro,该宏被记录在Sheet2上,所以无论按钮存储在哪里,都会为Sheet2运行。希望你能理解。