- ベストアンサー
VBAのフォームでTxtボックスとコンボボックス
- エクセル2013でVBAのフォーム(txt入力のみを5項目)を作成しましたが、曜日の入力をコンボボックスに変更したいです。
- 参考書にはUserForm_Initializeにマクロを記入するとなっていますが、元の曜日入力ボックスと置き換えられるのか疑問です。
- また、コンボボックスを作成する際にCombbox_Changedというプロパティが表示されるのですが、その意味がわかりません。
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
目についたので回答してみます。 私もそんなに詳しくないので間違っていたらすみません。 基本的な概念がわかればご自身でも勉強できそうなので VBAの初歩の考え方を少しご説明します。 ------------------------------- Private Sub UserForm_Initialize End Sub ------------------------------- まずVBA(及びVB)の基本的なコードの見方として以下の様な見方をします。 オブジェクト名:好きに付ける事ができます。 イベント名:VBの中で決まっており、オブジェクトによって可能な動作に違いがあったと思います。 ------------------------------------ Private Sub オブジェクト名_イベント名 ここには処理を書くよ! End Sub ------------------------------------ 上記の「イベント名」と表現したのは、VBAのプログラムが イベント駆動型プログラミングだからです。 どういった物がイベントになるかというと、「クリック」や「選択」(チェクボックスのチェックなど)が それに当たります。 そしてオブジェクト名というのはVBAの世界でフォーム、ボタン、ラベル、コンボボックスなど すべて「オブジェクト」と呼ばれる物になります。 これらの内容を合わせて先ほどのコードを見ると以下の様な感じになります。 -------------------------------------- ※オブジェクト:UserForm・・・フォームを作成した時の元から設定されているフォーム名 ※イベント名:Initialize・・・イニシャライズなので初期化とかの意味 Private Sub フォームの_初期化時 'フォームが表示された時に動かす処理 End Sub --------------------------------------- これは後に書いている質問の回答になります。 バージョンによって少し違うのかもしれませんが・・・ イベントとの中で、コンボボックスはChangedイベントというイベントが存在します。 何かというと、ComboBoxで何かが選ばれたら処理をするというイベントです。 以下が日本語で表した場合の例になります。 ------------------------------------------------- Private Sub ComboBox1_Change() 'ComboBox1のリストの中から何か選ばれた場合の処理 処理1:ComboBox1の値が土曜か日曜の場合は画面に「今日は休日です」を表示 処理2:ComboBox1の値が月曜日~木曜日の場合は「今日は平日です」を表示 End Sub ------------------------------------------------- ######### ↓ここからが今回の本題↓ ############### なぜCombBoxの値の設定に、フォームの初期化の処理がでてくるのか・・・ それは、フォームの初期化時にCombBoxのリストの内容を追加しているからです。 ※ComboBox1の部分は作成しているCombBox名によって変わります。 (Excel2007の一つ目に作成したComboBoxはComboBox1) ------------------------------------ Private Sub UserForm_Initialize 'ここには処理を書くよ! ComboBox1.AddItem "月" ComboBox1.AddItem "火" ComboBox1.AddItem "水" ComboBox1.AddItem "木" ComboBox1.AddItem "金" ComboBox1.AddItem "土" ComboBox1.AddItem "日" End Sub ------------------------------------ なかなか説明は難しいものですね。 参考になれば幸いです。
お礼
長文のご回答をありがとうございます。 一読して、理解できたようなできてないような、というところでしょうか。 マクロの素養がないからでしょう。簡単に考えていましたのですぐに完成できると思っていましたが、意外と難しいものです。 基本的なことなので理解しなければいけませんね。何度も読めば理解が深まるように思います。 参考にして試行錯誤を繰り返してみます。 ありがとうございました。