如何在每个工作表中设置相同的分配命令button

每次我插入具有相同名称(TestButton)的新闻表时,我都想使commandButon成为可能。 希望如果CommandButton单击将调用过程testing程序。 这适用于所有工作表中的CommandButton。 我的代码如下:

Private Sub Workbook_NewSheet(ByVal Sh As Object) Dim Obj As Object Dim Code As String Dim LF As String 'Line feed or carriage return LF = Chr(13) Set Obj = ActiveSheet.OLEObjects.Add(ClassType:="Forms.CommandButton.1", _ Link:=False, DisplayAsIcon:=False, Left:=880, Top:=20, Width:=100, Height:=50) Obj.Name = "TestButton" 'buttonn text ActiveSheet.OLEObjects(1).Object.Caption = "Send" 'macro text Code = "Sub TestButton_Click()" & LF Code = Code & "Call Tester" & LF Code = Code & "End Sub" 'add macro at the end of the sheet module With ActiveWorkbook.VBProject.VBComponents(ActiveSheet.Name).CodeModule .insertlines .CountOfLines + 1, Code End With End Sub Sub Tester() MsgBox "You have click on the test button" End Sub 

但是我收到错误消息“运行时错误1004对Visual Basic的编程访问不可信”。 如何解决?

你应该设置一个工作表,你想要它,并隐藏它。 使用该工作表作为模板。 无论何时添加工作表,请将其replace为模板的副本。

 Private Sub Workbook_NewSheet(ByVal Sh As Object) Dim WorkSheetName As String Dim i As Integer With Application .ScreenUpdating = False .EnableEvents = False .DisplayAlerts = fasle i = Sh.Index Worksheets("HiddenTempalte").Copy After:=Worksheets(i) WorkSheetName = Sh.Name Sh.Delete Worksheets(i).Name = WorkSheetName .DisplayAlerts = True .EnableEvents = True .ScreenUpdating = True End With End Sub 

“信任访问VBA项目”:

如何从.net代码检查是否启用了“信任访问VBA项目对象模型”的Excel应用程序?

考虑使用一个窗体button,而不是:

 Private Sub Workbook_NewSheet(ByVal Sh As Object) With Sh.Buttons.Add(Left:=880, Top:=20, Width:=100, Height:=50) .Caption = "Send" .OnAction = "Tester" End With End Sub Public Sub Tester() MsgBox "You have click on the test button" End Sub