2016-08-23 9 views
0

ワークシートに配置されたActiveXコントロールボタンを押すことによって実行されるVBA-Excelコードを記述しました。マクロからActiveXコントロールボタンを呼び出す

私はそれを実行するために常に押すのではなく、もう1つのマクロ(別個)に基づいて呼び出しを制御したいと思っています。

可能でしょうか?はいの場合は、それに関する洞察を共有してください。

これは私のワークシートがどのように見えると私は別のマクロから、そのボタンを起動する方法です:あなたは直接にサブを呼び出すことができるActiveXコントロールに付属のマクロを実行するために

This is how my worksheet looks like and i want to invoke that button from a separate macro

+0

clickイベントを直接呼び出すことができないのはなぜですか? – Comintern

+0

私はプロセスを自動化したい –

答えて

0

次のコマンドを実行します。

CallByName Worksheets("Sheet1"), "CommandButton21_Click", VbMethod 

。なお、(デフォルトでは)Excelは、ボタンのワークシートにPrivate Subを作成します。これらのサブモジュールをモジュールから呼び出す場合は、Privateを削除する必要があります。また、サブの名前NameOfTheButton_Clickである必要があります。そのように

、上記のコードは、モジュール内のサブに常駐している場合、あなたはそれを動作させるにしたいシート上のコードは、(例えば)が考えられます。

Sub CommandButton21_Click() 

MsgBox "gotcha" 

End Sub 

あなたが起動したい場合Sheet1上のすべてのボタンのすべてのマクロは、次のコードを実行します:

Option Explicit 

Public Sub tmpSO() 

Dim Obj As OLEObject 

For Each Obj In Worksheets("Sheet1").OLEObjects 
    If TypeName(Obj.Object) = "CommandButton" Then 
     CallByName Worksheets("Sheet1"), Obj.Name & "_Click", VbMethod 
    End If 
Next Obj 

End Sub 

をもう一度、Sheet1上の潜水艦のいずれもPrivateされていないことを確認してください。さもなければ、これらのサブはモジュールから呼び出すことはできませんが、単にSheet1にあるサブからも呼び出すことができます。

関連する問題