如何创build一个ActiveXbutton,并添加代码(告诉它运行什么子)使用VBA?

我想创build一个工作表中的一个ActiveXbutton,并分配一个代码(即告诉它要运行的子和该子已存在)。

我可以创buildbutton:(录制)

ActiveSheet.OLEObjects.Add(ClassType:="Forms.CommandButton.1", Link:=False _ , DisplayAsIcon:=False, Left:=41395.5882352941, Top:=234.705882352941, _ Width:=119.117647058824, Height:=39.7058823529412).Select 

但是我想改变标题并为它分配一个子,所以当有人点击新创build的activexbutton时,它会运行一个已经存在于要创buildbutton的工作簿中的模块中的子。 一切都发生在本工作簿中。

谢谢!

PS – 我不能使用命令button….我只能使用ActiveX

这工作:

 Sub AddingButtons() Dim btn As Button Dim t As Range Dim Obj As Object Dim Code As String Dim ShtNm As String With ThisWorkbook .Worksheets.Add(After:=Worksheets(1)).Name = "My New Worksheet" .Sheets("My New Worksheet").Activate End With ShtNm = ActiveSheet.Name Sheets(ShtNm).Select Set t = ActiveSheet.Range("D3:F4") 'create button Set Obj = ActiveSheet.OLEObjects.Add(ClassType:="Forms.CommandButton.1", _ Link:=False, DisplayAsIcon:=False, Left:=t.Left, Top:=t.Top, Width:=t.Width, Height:=t.Height) 'button text ActiveSheet.OLEObjects(1).Object.Caption = "Show Data Selection Window" 'macro text Code = "Private Sub CommandButton1_Click()" & vbCrLf Code = Code & "Call MyTestSub(ShtNm)" & vbCrLf Code = Code & "End Sub" MsgBox "Worksheet name is " & ActiveSheet.Name 'add macro at the end of the sheet module With ActiveWorkbook.VBProject.VBComponents(Worksheets(ShtNm).CodeName).CodeModule .insertlines .CountOfLines + 1, Code End With End Sub 

改编自: http : //social.msdn.microsoft.com/Forums/office/en-US/1a48cdfd-42af-486c-a4a5-3d5d5797d00c/adding-an-active-x-command-button-and-its-code -使用function于Excel的VBA?论坛= exceldev

PS – Tim – 在他对我原来的问题的评论中有答案。 Thx tim。 如何在Excel中创build一个dynamicbutton

对于Excel 2013,单击开发人员/插入/ ActiveX命令button。 插入后,右键单击该button,为标题和其他操作select属性,selectmacros代码的视图代码。