2016-07-12 3 views
0

Ich möchte commandButon jedes Mal machen, wenn ich eine Zeitung mit dem gleichen Namen (TestButton) einfüge. In der Hoffnung, dass, wenn CommandButton click die Prozedur Tester aufrufen wird. Dies gilt für den Befehlsschaltfläche in allen Blatt. Mein Code ist wie folgt:Wie setze ich die select assign commandbutton in jedem Arbeitsblatt

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 

aber ich erhalte eine Fehlermeldung „Laufzeitfehler 1004 Programmatischer Zugriff auf Visual Basic ist nicht vertrauenswürdig“. Wie man es löst?

Antwort

1

Sie sollten ein Arbeitsblatt-Setup, wie Sie es wollen und ausblenden. Verwenden Sie dieses Arbeitsblatt als Vorlage. Wenn Sie ein Arbeitsblatt hinzufügen, ersetzen Sie es durch eine Kopie der Vorlage.

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 
0

"Vertrauen Zugriff auf VBA-Projekt":

How to check from .net code whether "Trust access to the VBA project object model" is enabled or not for an Excel application?

Betrachten wir eine Forms-Taste statt:

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 
+0

Danke Tim. Aber wenn ich Send-Taste gedrückt habe, erscheint kein Meldungsfeld. – sandara

Verwandte Themen