2016-07-12 29 views
0

同じ名前(TestButton)のニュースシートを挿入するたびにcommandButonを作成したいと思います。 CommandButtonをクリックすると、Testerプロシージャが呼び出されることを期待しています。これは、すべてのシートのコマンドボタンに適用されます。私のコードは次のとおりです。同じワークシートに同じコマンドボタンを割り当てる方法

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へのプログラムのアクセスが信頼されていない」を取得します。どのようにそれを解決するには?

答えて

1

あなたはセットアップあなたがそれをしたいし、それを隠す方法ワークシートをする必要があります。そのワークシートをテンプレートとして使用します。ワークシートを追加するたびに、テンプレートのコピーで置き換えます。

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

"VBAプロジェクトへの信頼アクセス":

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

ではなく、フォームのボタンを使用することを検討してください:

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

ありがとうございます。しかし、送信ボタンを押すと、メッセージボックスは表示されません。 – sandara

関連する問題