プロが教えるわが家の防犯対策術!

下記コードでcomboboxをつくったのですが
作成されたCombobox1のComboBox1_Changeエベントに
標準モジュール内のSub cal をVBAで割り当てたいのですが可能でしょうか。

コンボボックス作成マクロ

x=0
y=0
With Worksheets("Sheet1").OLEObjects.Add(ClassType:="Forms.ComboBox.1", Link:=False, DisplayAsIcon:=False)
.Left = X
.Top = Y
.Width = 53.25
.HEIGHT = 18
.ListFillRange = "AAA"
End With

これで作成したコンボボックスに標準モジュール内マクロをVBAで割りあてしたい。

標準モジュール
sub cal


end sub

A 回答 (3件)

三度です



>ComboBoxを貼り付けるシートも毎回作成するのでこれもだめで
打開案ですがどうでしょうか?

作成するシートにComboBoxを貼り付けるのではなく、
ComboBoxが張り付いているシートをコピーする
(ComboBoxが張り付いているシートは非表示)

これだと、関数自体もコピーされますし、
関数名も固定でいけます

参考までに

この回答への補足

説明不足ですみません。
Sheet1でComboBoxを何個貼り付けるか決定(1~100)
そのあとSheet2に貼り付ける
その貼り付け位置も他の条件で12種類あるので
かなり複雑になりそうです。
が、ほかに方法もなさそうなのでやってみます。

補足日時:2010/01/28 09:22
    • good
    • 0

勘違いすみません



OnActionプロパティでマクロを登録するのですが、ComboBoxだとできないみたいです。
ちなみに、CheckBoxだとできます。
With ActiveSheet.CheckBoxes.Add(10, 10, 20, 20)
.Name = "CheckBox " & .Index
.Caption = ""
.OnAction = "cal"
End With

手として
ComboBox_Change関数をあらかじめ複数個書いておく
というのはダメでしょうか?

この回答への補足

ありがとうございました。
ComboBoxはだめですか。
ComboBox_Change関数をあらかじめ複数個書いておくのも考えたのですがそもそもComboBoxを貼り付けるシートも毎回作成するのでこれもだめで。

補足日時:2010/01/27 15:29
    • good
    • 0

Private Sub ComboBox1_Change()


Call cal
End Sub

これでよければできますよ

この回答への補足

結果てきに

Private Sub ComboBox1_Change()
Call cal
End Sub

になるようにCombobox作成マクロはつくれますか?

補足日時:2010/01/27 11:18
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!