

Excelでシートにコマンドボタンを作成し、そのボタンにクリックイベントを追加したく、No.321427「Excelで動的にイベントを作成する方法」にあるようにやってみたのですが、実行時エラーが出ます。
ご存知の方がいらっしゃいましたら、ご回答お願いいたします。
'ボタン生成
Dim mn As OLEObject
Dim nw_sht As Worksheet
Dim cdMoj As CodeModule
Dim Ln As Long
Set mn = nw_sht.OLEObjects.Add(ClassType:="Forms.CommandButton.1", Link:=False, DisplayAsIcon:=False, Left:=510, Top:=10, Height:=20, Width:=100)
mn.Name = "メニューへ"
mn.Object.Caption = "メニューへ"
mn.Object.TakeFocusOnClick = False
'イベント追加
Set cdMoj = ThisWorkbook.VBProject.VBComponents(nw_sht.CodeName).CodeModule
Ln = cdMoj.CreateEventProc("Click", mn.Name)
cdMoj.InsertLines Ln + 1, " Load メニュー"
cdMoj.InsertLines Ln + 2, " メニュー.Show"
'ここまで
エラー:実行時エラー424 オブジェクトが必要です
環境:Excel2000
*えらー終了するとボタンは作成できていて、クリックイベントも機能しています。
A 回答 (2件)
- 最新から表示
- 回答順に表示
No.2
- 回答日時:
このコーディリングのエラーの原因をお尋ねのところ
別のことを申し上げて済みません。
コマンドボタンコントロールは、ツールボックスから手動で貼りつけするのが、VB(A)ひいては、最近のソフト界の推奨のようですが、どうですか。それなら簡単だし、ダブルクリックして出てくる
Private Sub CommandButton1_Click()
End Sub
にコードを書けばエラーは起こらないのでは。
コーディング例を真似たためか、こうするべきものなのか、随分難しい高等な?組み方構成になっているように見えますが、私のように学習不十分なものには、良く判らないのですが。
シートにコマンドボタンを置いておければ、
もちろんおっしゃる方法をとりますが、
今回は都度新しいシートが対象のため、
ボタンの生成とイベントの追加を動的に行いたかったのです。
説明が分かりにくくてすみません。
ただ、いろいろ調べましたが一般的によく使われる方法でないのは確かなようですので、
シートに貼り付ける以外の方法を考え中です。
また何かアドバイスがありましたらよろしくお願いします。
ありがとうございました。
No.1
- 回答日時:
かなり前に考えたことがあります。
だいぶ忘れてしまいましたが、下のようにすれば動きませんか。
『Name』プロパティになにか意味があったと思いますが、忘れてしまいました。
Sub AddButton()
'ボタン生成
Dim mn As OLEObject
Dim nw_sht As Worksheet
Dim cdMoj As CodeModule
Dim Ln As Long
'//== 追加 ====================
Set nw_sht = ActiveSheet
'==============================
Set mn = nw_sht.OLEObjects.Add(ClassType:="Forms.CommandButton.1", _
Link:=False, DisplayAsIcon:=False, _
Left:=510, Top:=10, Height:=20, Width:=100)
'//== コメント行に変更 =========
'mn.Name = "メニューへ"
'==============================
mn.Object.Caption = "メニューへ"
mn.Object.TakeFocusOnClick = False
'イベント追加
Set cdMoj = ThisWorkbook.VBProject.VBComponents(nw_sht.CodeName).CodeModule
Ln = cdMoj.CreateEventProc("Click", mn.Name)
cdMoj.InsertLines Ln + 1, " Load メニュー"
cdMoj.InsertLines Ln + 2, " メニュー.Show"
'ここまで
End Sub
この回答への補足
ご回答ありがとうございます。
やってみましたが同じ状況でした。
『Name』のところだけ『.Object』がいらないのはなんでかなと思っていたんですが、私もよく分かりません。。
あとコードの部分、見やすく整形していただいてありがとうございます。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) EXCEL VBAにて動的にCheckBOXを複数作成し、同BOXにイベントを追加したい 1 2023/03/16 07:05
- Visual Basic(VBA) このVBAでExcelアプリケーションを作成は必要ですか? 3 2023/07/19 21:13
- Visual Basic(VBA) excel vbaでvlooupの変数がわかりません。 7 2022/05/30 09:35
- Visual Basic(VBA) エクセルのマクロを使ってメールを送る方法について教えてください 2 2022/03/29 01:36
- Visual Basic(VBA) 【VBA】写真の貼り付けコードがうまく機能しません。 5 2022/09/01 18:43
- Visual Basic(VBA) Excel vbaについての質問 3 2023/04/18 16:14
- Visual Basic(VBA) エクセルVBAで以下のようなコードを書いたらエラーになりました。何処が間違っているの教えて? 1 2023/02/10 18:30
- Visual Basic(VBA) 【VBA】Excelの特定範囲のセルを画像で保存したい 2 2023/01/25 13:06
- Visual Basic(VBA) VBA 参照先で選んだファイルをコピーし、出力先に別名で保存したい 8 2022/05/13 20:37
- Visual Basic(VBA) ExcelVBAに関する質問 3 2023/02/17 10:47
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Excel2016でプルダウンのメ...
-
正しい丁寧語を教えて下さい。
-
すき家のアルバイトは
-
マクドナルドのバイトをしてい...
-
今日マクドナルドの面接を受け...
-
てめえの頭はハッピーセットか...
-
マクドナルド ミーティン...
-
google chromeについて困ってい...
-
ACCESS ファイルへのアクセス...
-
着信履歴の消去と電話番号の登...
-
イッピとついたち
-
windowsのワードで作った文章を...
-
「一日」はどう読むのが正しいの?
-
9月一臂の〔一臂〕の意味
-
メニューについて
-
漢字の読み方 「火」と「会」を...
-
モスバーガーへ行ったときの予算
-
ウィンドウズからマックへのメ...
-
中学生男子です。9月までに15キ...
-
バイト探し マックかケンタッキ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Excel2016でプルダウンのメ...
-
飲食店で、一人で食事をしてい...
-
正しい丁寧語を教えて下さい。
-
漢字の読み方 「火」と「会」を...
-
ケンタッキーフライドチキンっ...
-
モスバーガーのハンバーガーは...
-
【急】SDカードにフォルダーの...
-
すき家のアルバイトは
-
プルダウンメニューの位置がず...
-
「一日」はどう読むのが正しいの?
-
ACCESS ファイルへのアクセス...
-
蒙古タンメンとプルダックポッ...
-
吉野家のご飯って何故いつもあ...
-
9月一臂の〔一臂〕の意味
-
EXCELのプルダウンメニューを全...
-
700Wの電子レンジは、コンビニ...
-
1円玉がたくさんくっついてとれ...
-
メニューバーの不思議。閉じる...
-
windowsのワードで作った文章を...
-
松屋で初バイトで明日が出勤日...
おすすめ情報