2013-05-12 27 views
0

如何將此宏分配給多張紙上的按鈕;即。不管按鈕的名稱是「按鈕1」還是「按鈕2」?將宏分配給多張紙上的按鈕

Public SelectionChange_Enabled As Boolean 
Sub Button1_Click() 
If ActiveSheet.Shapes("Button 1").TextFrame.Characters.Text = "Disable Events" Then 
    ActiveSheet.Shapes("Button 1").TextFrame.Characters.Text = "Enable Events" 
    SelectionChange_Enabled = False 
Else 
    ActiveSheet.Shapes("Button 1").TextFrame.Characters.Text = "Disable Events" 
    SelectionChange_Enabled = True 
End If 
End Sub 

回答

3

您可以使用Application.Caller來確定所謂的例程。你可以這樣

用它來只更新被點擊

Sub AllButtons_Click() 
    With ActiveSheet.Shapes(Application.Caller) 
     If .TextFrame.Characters.Text = "Disable Events" Then 
      .TextFrame.Characters.Text = "Enable Events" 
      SelectionChange_Enabled = False 
     Else 
      .TextFrame.Characters.Text = "Disable Events" 
      SelectionChange_Enabled = True 
     End If 
    End With 
End Sub 

按鈕並指定所有按鈕AllButtons_Click

要更新按鈕進行的​​跨所有工作表(即使用這種Sub

Sub AllButtons_Click2() 
    Dim shp As Button 
    Dim sh As Worksheet 

    SelectionChange_Enabled = Not SelectionChange_Enabled 
    For Each sh In ThisWorkbook.Worksheets 
     For Each shp In sh.Buttons 
      If shp.OnAction = ThisWorkbook.Name & "!AllButtons_Click2" Then 
       If SelectionChange_Enabled Then 
        shp.Caption = "Disable Events" 
       Else 
        shp.Caption = "Enable Events" 
       End If 
      End If 
     Next 
    Next 

End Sub 
+0

謝謝。我怎麼能更新所有按鈕的文本,以便當我點擊一個按鈕時,所有其他按鈕註冊相同的更改? – user2319146 2013-05-12 01:36:08

+0

嗯...通過「所有按鈕」我想我的意思是所有的按鈕,AllButtons_Click分配給他們:) – user2319146 2013-05-12 02:02:37

+0

哈,小心你想要什麼。查看更新 – 2013-05-12 02:09:33

相關問題