みなさん、こんにちはケンケンです。
今回は、VBAのメッセージボックス機能だけでアンケートをとってみようと思います。
ユーザーフォームを使うのが普通ですが、簡易的なものならメッセージボックスのみで可能なので練習がてらやってみましょう。
メッセージボックス機能だけでアンケートをとる
以下のような手順で進めていきます。
①Excelシートを作る
②メッセージボックスを表示させる
③男性女性の選択
④犬が好き・嫌い・普通の選択
この手順でやっていきます。それでは実際に手を動かしていきましょう。
Excelシートを作る
ここはいたって簡単です。
A列を性別欄、B列に犬が好きかどうかを選択する欄を作ります。
こんな感じです。
メッセージボックスを表示させる
メッセージボックスを表示させてみましょう。
復習です。
プロシージャを生成しコードを書いていきます。
1 2 3 4 |
Sub msgbox_rensyu() Dim sentaku sentaku = MsgBox("男性ですか?", vbYesNo, "アンケート") End Sub |
コードを実行すると、
このように表示されればOKです。
男性女性の選択
「はい」を押したら男性、「いいえ」を押したら女性となるようにIfステートメントを使って分岐させます。
1 2 3 4 5 6 7 8 9 |
Sub msgbox_rensyu() Dim sentaku sentaku = MsgBox("男性ですか?", vbYesNo, "アンケート") If sentaku = vbYes Then Range("A2").Value = "男性" Else Range("A2").Value = "女性" End If End Sub |
上記のようにコードを書き実行すると、
セルA2に男性、女性が表示されるようになります。
ここで連続でデータを入力できるように、最終行を変数に格納して常に最新行に表示できるようにしましょう。
1 2 3 4 5 6 7 8 9 10 11 |
Sub msgbox_rensyu() Dim sentaku Dim Lrow '追加 Lrow = Range("A" & Rows.Count).End(xlUp).Row + 1 '追加 sentaku = MsgBox("男性ですか?", vbYesNo, "アンケート") If sentaku = vbYes Then Range("A" & Lrow).Value = "男性" '変数に置き換え Else Range("A" & Lrow).Value = "女性" '変数に置き換え End If End Sub |
最終行を取得するコードを追加し、該当箇所を変数に置き換えます。
これを実行すると、
犬が好き・嫌い・普通の選択
次は3つに分岐させてみます。
犬が好き・嫌い・普通の選択を可能にするようにコードを書いてみましょう。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 |
Sub msgbox_rensyu() Dim sentaku Dim Lrow Lrow = Range("A" & Rows.Count).End(xlUp).Row + 1 sentaku = MsgBox("男性ですか?", vbYesNo, "アンケート") If sentaku = vbYes Then Range("A" & Lrow).Value = "男性" Else Range("A" & Lrow).Value = "女性" End If sentaku = MsgBox("犬は好きですか?", vbYesNo, "アンケート") If sentaku = vbYes Then Range("B" & Lrow).Value = "好き" ElseIf sentaku = vbNo Then sentaku = MsgBox("では犬は嫌いですか?", vbYesNo, "アンケート") If sentaku = vbYes Then Range("B" & Lrow).Value = "嫌い" ElseIf sentaku = vbNo Then sentaku = MsgBox("好きでも嫌いでもないですか?", vbYesNo, "アンケート") If sentaku = vbYes Then Range("B" & Lrow).Value = "普通" Else Range("B" & Lrow).Value = "回答なし" End If End If End If End Subか |
簡単にコードを説明すると、
まず犬が好きか選択します。
「はい」だったらシートに「好き」、「いいえ」だったら「犬が嫌いか」のメッセージボックスへ。
「はい」だったらシートに「嫌い」、「いいえ」だったら「好きでも嫌いでもないか」のメッセージボックスへ。
「はい」だったらシートに「普通」、「いいえ」だったら「回答なし」とシートに記載します。
以下のようにシートに入力出来たら成功です。
イメージは以下の通りです。
本来はユーザーフォームを使いフォーム上で選択することでシートに転記するのが普通ですが、
今回は、メッセージボックスと条件分岐の練習に良いかと思います。
是非、ご自分で試してください。
それでは、またお会いしましょう。
みなさん、こんにちはケンケンです。 今回は、ユーザーフォームの作り方をご紹介します。 実務でよく耳にするのは「管理データを作っているけど、横に長い表にたくさんの項目を入力するのが面倒!」といった声です。 […]