- 締切済み
VBAでコマンドボタンを作成~実行するには
いつもお世話になっております。 今回やりたいことは、 1 ワークシートからユーザーフォームのチェックボックス作成(多数変動) 2 「1」が数に変動があるため、最下段にコマンドボタン作成 3 「2」で作成したボタン実行で、チェック=Trueを印刷 です。 現在、3の手順で止まっています。 まず、 Private Sub UserForm_Initialize() 内で、 Set CMD = Me.Controls.Add("Forms.CommandButton.1") With CMD .name = PrintStart .Height = 30 .Width = Me.Width - 20 .Left = 10 .Top = 230 .Caption = "印刷する" End With としてボタンを作成しています。 次に Private Sub PrintStart_Click() 内で、先にテストがしたかったので、 for i = 1 to end '(end = 変数) name = Me.Controls("CheckBox" & i).Caption '(name = string変数) MsgBox (name) Next i としているのですが、ここで動作してくれない状況です。 ちなみにフォーム自体の大きさも、その時の行数に応じて自動生成にしているのですが、それをやめて、 あらかじめ縦になが~いフォームに固定しておいてボタンを置いておき、 そのボタン(CommandButton1)で上記のコードを実行すると、うまくいきました。 ただ、プログラマのみなさんなら分かってくれると思いますが、見た目ってこだわりたいですよね?ね? よろしくお願いします。
- みんなの回答 (2)
- 専門家の回答
みんなの回答
- ap_2
- ベストアンサー率64% (70/109)
「動的に生成したボタンからイベントが呼ばれない」ですか? イベント発生時には "Object名_Event名()"がコールされる ・・・というワケではなく、VBE(エディタ)が関数名で判断して自動的に紐付けてくれてます。 なので、VBEを介さず動的に生成したボタンには、自分でイベントプロシージャを登録する必要があります。ただ、VBProjectに対する操作になってしまうので、Excelのセキュリティ設定で大抵拒否され、ユーザに設定変えろとも言えず、代替手段を探すことになると思います。 ボタンは非表示(.Visible=False)で用意し、動的に位置調整がよいかと。
- neKo_quatre
- ベストアンサー率44% (735/1637)
> 今回やりたいことは、 チェックボックスを動的に作りたいんでなくて、動的に作ったチェックボックスで何かしたいのでは。 > ただ、プログラマのみなさんなら分かってくれると思いますが、 何をしたいのか?をしっかり分析した上で、やりたい事に適したインターフェースを選んだり考えたりします。 > 見た目ってこだわりたいですよね? 結果、余計な苦労するのは下策です。 何がしたいのか不明瞭ですが、複数選択、チェックボックスの形状のリストボックス使う方が賢いのでは。 リストボックスの使い方 [ExcelのVBA] http://www.petitmonte.com/excel/excel_vba_30.html
補足
ありがとうございます。 ほほぅ、リストボックスにチェックボックスを作ることができたんですね。勉強不足でした。 >チェックボックスを動的に作りたいんでなくて、動的に作ったチェックボックスで何かしたいのでは。 その通りです。タイトルにも本文にも書いている通り、動的に作った『コマンドボタン』で何かしたいんです。 >結果、余計な苦労するのは下策です。 まさにおっしゃる通りで、今回は別の方法で出来ないかを考えて、身分相応なやり方で自己解決しました。 ありがとうございました。