• 締切済み

VBAでアプリケーションの作成

VBAを使ってアプリケーションを作成しようとしています。内容は、30個の質問に対してYES・NOどちらかを選択してもらい、YESの数が1~10,11~20,21~30個の場合に分け、結果表示ボタンをクリックするとそれに応じた結果が表れるといった感じです。何かアドバイス頂ければ幸いです。よろしくお願いします。

みんなの回答

回答No.3

こんなのはどうでしょう。 まず、 A1:YES B1:NO C1:質問 D1:結果表示 C2からC31:30個の質問 として、以下をシートのモジュールに書き込んでください。 質問のA列かB列を選ぶと、YES NO を表示して、結果表示を押すと、結果を表示します。 「結果表示」はどこにあってもいいです。 「クリア」も付けたので、どこかのセルを「クリア」にしてください。 Private Sub Worksheet_SelectionChange(ByVal Target As Range) '複数セル選択の場合は判定せず If Target.Cells.Count > 1 Then Exit Sub End If '選択表示 If Not Intersect(Range("A2:B31"), Target) Is Nothing Then If Target.Column = 1 Then Cells(Target.Row, 1) = "YES" Cells(Target.Row, 1).Interior.ColorIndex = 3 Cells(Target.Row, 2) = "" Cells(Target.Row, 2).Interior.ColorIndex = Null Else Cells(Target.Row, 1) = "" Cells(Target.Row, 1).Interior.ColorIndex = Null Cells(Target.Row, 2) = "NO" Cells(Target.Row, 2).Interior.ColorIndex = 6 End If End If '結果表示 If Target.Text = "結果表示" Then If WorksheetFunction.CountIf(Range("A2:B31"), "") <> 30 Then MsgBox "全部選ばれていません" Else Dim msg As String Select Case WorksheetFunction.CountIf(Range("A2:A31"), "YES") Case 0: msg = "なし" Case 1 To 10: msg = "1-10です" Case 11 To 20: msg = "11-20です" Case 21 To 30: msg = "21-30です" End Select MsgBox msg 'メッセージボックスに表示する場合 Target.Offset(0, 1) = msg '「結果表示」の右側に表示する場合 End If End If 'クリア If Target.Text = "クリア" Then If MsgBox("クリアしてもいいですか?", vbYesNo) = vbYes Then Range("A2:B31").Value = "" Range("A2:B31").Interior.ColorIndex = Null End If End If End Sub

  • spar
  • ベストアンサー率46% (35/75)
回答No.2

おはようございます 駄作ですが、おおまかにこんなモノかと思われます 参考になれば幸いです Dim Kotae As Integer Private Sub CommandButton1_Click() Kotae = 0 If MsgBox("どっち?", vbYesNo, "質問1") = vbYes Then Kotae = Kotae + 1 End If If MsgBox("どっち?", vbYesNo, "質問2") = vbYes Then Kotae = Kotae + 1 End If If MsgBox("どっち?", vbYesNo, "質問3") = vbYes Then Kotae = Kotae + 1 End If If MsgBox("どっち?", vbYesNo, "質問4") = vbYes Then Kotae = Kotae + 1 End If If MsgBox("どっち?", vbYesNo, "質問5") = vbYes Then Kotae = Kotae + 1 End If If MsgBox("どっち?", vbYesNo, "質問6") = vbYes Then Kotae = Kotae + 1 End If If Kotae <= 1 Then MsgBox "少ない?" ElseIf Kotae >= 2 And Kotae <= 4 Then MsgBox "まあまあ" ElseIf Kotae >= 5 And Kotae <= 6 Then MsgBox "多いなぁ" End If End Sub

  • lark_0925
  • ベストアンサー率63% (37/58)
回答No.1

もうだいぶ以前の話になりますが、私の地元のちょっとした イベント(お祭り)の出店(出店っていうのかなあ)で 仰っているようなアンケート(診断表なのかな)をExcel/VBAで 作成したもので公開しているのを見た事がありました。 当時は、私もVBAを始めて間もない頃でしたので、内容よりも その動作(仕様)が気になってPCを独占してしまったころを よく覚えていますが・・・。 前置きは長くなりましたが、そのときは、シートに開始のボタンが 設置されていて、クリックすると、 Msgbox関数で質問を表示し、オペレータに Yes Noのボタンのクリックを 促し、その繰り返しでYesの数を数える仕様でしたよ!! Sub test()   Dim ans As Long   ans = MsgBox("貴方は 男ですか?", vbYesNo)   msgbox ans End Sub

関連するQ&A

  • VBAでアプリケーションの作成

    VBAでアプリケーションを作成しようとしています。チェックテストというものです。30個の質問に対して当てはまるものにはチェックボックスにチェックを入れ、「結果表示」ボタンをクリックしてもらいます。チェックの数が1~10、11~20、21~30個の場合に分け、それぞれに応じた結果をシート上に表示させます。ちなみに結果のデータはシート2にテキストボックスを使って保存してあります。VBA初心者でどのように進めたらよいのか分かりません。よかったらアドバイスを下さい。よろしくお願いします。

  • エクセルでのVBAについて

    エクセル2000を使用しています。 VBAにて「表示したい物件名をクリックしてください」のMsgBOXを表示してyesまたはnoを表示して YESが選択されたときはセルをクリックし、その後に範囲指定をします。 noが選択されたときは何も動作をしないという動きをしたいのですが、宜しくお願いします。

  • FLASHで性格判断テストを作りたいのですが・・・

    ↓この様な性格判断テストを作ろうと思っていますが、Yesをクリックした数を最後に合計して診断結果を表示するには、どうすれば良いのでしょうか? ・いくつか質問画面を用意し、それぞれの画面に「Yes」と「No」のボタンを配置 ・順に質問画面を表示して行き、最後に「Yes」のをクリックした数に従って診断結果を表示する ヨロシクお願いしますm(_ _)m

    • ベストアンサー
    • Flash
  • ACCESSでテーブルにあるチェックボックスを一括でYesにする方法を教えてください

    アクセスのテーブルにあるYes/No型のチェックボックスを、コマンドボタンを押すことによって、全てのレコードをYes(チェックが入っている状態)又はNo(チェックが入っていない状態)にする 方法を教えてください。自分で、参考書をみながら試みたのですが、NoをYesに変えられたのですが、全部Yesにならなくて困っています。 (NoはYesになりますが、元々YesだったところがNoになってしまう) まだ、VBA初心者ですので、小学生(実際は中年?)にも解るように教えていただければ幸いです。よろしくお願いします。

  • (Excel+VBA)ユーザーフォームのみ表示で完結させたい。

    ExcelのVBAを使った複雑なアプリケーションを開発中です。  本体のWorkBookは、終始必要なくて、ユーザーフォームだけで完結するものです。結果的には、あたかもVBで作成されたもののように見えることになる。 【手順】 1) xslファイルを開くとユーザーフォームのみ表示される。 2) ユーザーフォームで一連の作業を行う。本体のWorkBook上のsheetは処理中に使用はする(作業用の一時データ貼り付けなど)けど、表示させたくない。 3) 作業終了時・・・これがわからない。      (終了ボタンまたは閉じるボタンクリック)            |      <他のWorkBookが開いているか>    |                 |    yes                 No    |                 | [現在のworkBookのみ閉じる]   |   saveの必要なし    [アプリケーションを終了する]                    saveの必要なし

  • ラジオボタンで診断テストを作成したい

    ラジオボタンで診断テストを作成したい Yes、No形式で10問のラジオボタンから選択し、 Yesの数に応じ5通りのリンク先にジャンプするようなサイトを作成しようと思っています。 調べているうちに下記のような同様の質問を発見したのですが、 http://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q1341900288 これだと2の10乗、1024通りのリンクを設定しないといけません。 例えばYesを1、Noを0などの数値に置き換えて、 Yesの数が1-3個は"http://~~"、4-6個は"http://~~" という風には設定できないのでしょうか? わかりにくい説明で申し訳ありませんが、 よろしくお願いします。

  • VBAについてわからないことがあります・・

    VBAでメッセージボックスに「新年の挨拶」(内容は自由)を表示するものを作成する。 また、それについて、エクセルにボタンをつくり、ボタンをクリックすれば、表示されるようにする。 この問題が自分なりに調べたんですがわかりませんでした(・.・;) ご回答よろしくお願いします。

  • Access VBA 他アプリケーション

    Accessのフォームから他アプリケーションを起動するボタンをつくります。 起動したアプリケーションの入力フォームへ、Accessのフォームのテキストボックスの内容を書き込む事はできないでしょうか? 例えば、Accessのフォームに『OKWave』と入力されたテキストボックスと、ブラウザが開くボタンが配置されているとします。ボタンをクリックするとブラウザが起動し、起動したら任意の検索サイトが表示され、そのサイトのフォームに、Accessのフォームのテキストボックスにかかれている、『OKWave』が自動的に入力するようなVBAを書きたいと思います。 よろしくお願いします。

  • ファイルメーカーについて

    またまたファイルメーカー(Pro7)について質問いたします。 例 1つのレコードにYesもしくはNoを選択するAフィールドを作成 1.YES 2.No 3.Yes 4.Yes 5.No Yesの総計3を表示したいのですが、今までは 1つのレコードにもう1つBフィールドを作成 if(B="Yes" ;1;0)関数により答えを導き、 総計フィールド&パートを作成し、Bフィールドの合計を 表示してきました。 なにか他の方法でスマートなやり方や関数はないのでしょうか。 もしくは上記方法で間違いないのでしょうか。 宜しくお願い致します。

  • Excel VBA msgboxについて

    メッセージボックスを表示させた際 OKボタンや、YES/NOボタン上にポインタを移動させるコードを教えて頂けませんか? 「VBA msgbox ポインタ 移動」などで検索したのですが どうしてもヒットしませんでした。 どうぞよろしくお願いいたします。

専門家に質問してみよう