如何在特定 sheet 上获得 Excel macro/module 到 运行?

How can I get an Excel macro/module to run on a specific sheet?

假设我在一个 Excel 工作簿中有 10 个 sheet,并且 Sheet2 到 Sheet10 在需要格式化的方式上都是独一无二的。假设我为每个记录了 9 个独特的宏,我想要一个中央位置来容纳所有按钮(在 Sheet1 中),每个记录的宏都有一个按钮,这样当用户转到 sheet 1 并单击名为“ sheet 2" 它将 运行 为 sheet 2 录制的宏针对 sheet 2,即使用户处于活动状态 sheet 1。或者如果用户单击名为“sheet 10”的按钮,它 运行 是 sheet 10 对 sheet 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

我还在网上找到了这段代码,我在顶部添加了它 运行s 成功但不知何故它只 运行s 在活动 sheet:

    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 控件会很有帮助,但是您可以将按钮中的文本更改为例如“Sheet 2 Button”,并且绑定到该按钮的代码将是类似

的东西
Private Sub Sheet2Button_Click()
    Call Sheet2Macro
End Sub

因此,当您单击显示 Sheet 2 按钮的按钮时,它将调用 Sheet2Macro,并且该宏已记录在 Sheet2 上,因此 运行 对于 Sheet2,无论按钮存储在何处。希望这是有道理的。