0

我创建了一个宏来在激活工作表时创建一个按钮。然后我使用下面的代码调用它: 但是每次我转到不同的工作表然后再次返回到包含此按钮的工作表时,宏都会完成它的工作。当我单击按钮时,我只想让宏工作

Private Sub Worksheet_Activate()
    Call sortData
End Sub

这是我创建的宏代码:

 Sub sortData()
'
'     
'

'

    ActiveSheet.Buttons.Add(689.25, 59.25, 133.5, 30).Select
    Selection.OnAction = "sortData"
    Selection.Characters.Text = "Sort Data"
    With Selection.Characters(Start:=1, Length:=28).Font
        .Name = "Times New Roman"
        .FontStyle = "Bold"
        .Size = 12
    End With
    Range("A1").Select


End Sub

现在我的问题是单击此按钮时,我会将下面显示的代码放在哪里?或者只是我怎样才能使这个按钮起作用?我试图将代码放在我调用宏的同一张表中,但它不起作用。

Sub sortData_Click() 'did i call the button right? but it is not working when i us it
'codes here
End Sub
4

1 回答 1

0

在 VBA 编辑器中,单击插入新模块(或者您可以将其放在您的 sortData 所在的同一模块中),然后将此代码写入您的新模块:

Sub procedureName() 'procedure name is exactly the same as what you named in Selection.OnAction = "sortData"

'codes here
End Sub

您实际上所做的是让 sortData() 调用自身,因为您已设置 Selection.OnAction = "sortData" -> > 将此名称更改为您要执行的任何过程名称

于 2013-05-20T07:57:26.220 回答