アプリ版:「スタンプのみでお礼する」機能のリリースについて

エクセル2013で、やっとのことでマクロのフォーム(txt入力のみを5項目)を完成させることができました。
次に、そのうちの一つは曜日の入力なのでこれをコンボボックスにして、一覧を出してマウスで選択するように変更したいのですがどうもうまくいきません。マクロは初めてなので基本的な考え方ができていないのです。
 
そこで質問なのですが、参考書には 

Private Sub UserForm_Initialize

End Sub

にマクロを記入するとなっていますが、これをもとの曜日入力ボックスと置き換えることはできないのでしょうか。それとも、終了ボタンのマクロと同じように、別のプロシージャにしないといけないのでしょうか。

それから、これはあまり重要ではないかもしれませんが、私がコンボボックスを作成するとマクロに
Combbox_Changed
のようなプロパティ(?)が表示されて、ヘルプを見てもよくわかりません。これはどういうことなのでしょうか。

よろしくお願いします。

A 回答 (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
------------------------------------

なかなか説明は難しいものですね。
参考になれば幸いです。
    • good
    • 0
この回答へのお礼

長文のご回答をありがとうございます。

一読して、理解できたようなできてないような、というところでしょうか。
マクロの素養がないからでしょう。簡単に考えていましたのですぐに完成できると思っていましたが、意外と難しいものです。
基本的なことなので理解しなければいけませんね。何度も読めば理解が深まるように思います。
参考にして試行錯誤を繰り返してみます。

ありがとうございました。

お礼日時:2014/08/14 17:10

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