![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?5a7ff87)
閲覧ありがとうございます。
弟が高校受験を控えているのですが、パソコンをいじってばかりで全く勉強をしようとしません。そこで、パソコンで出来る英単語テストをVisualBasicで作ろうと思い立ったのですが、出来上がるのは構想ばかりで初心者の私には難しくてプログラムの組みようがありませんでした。手も足も出ず困っています。どうか力をお貸しいただけたらと思います。
構想はこんな感じです・・・
・ワークシート上に100問、英単語と対応する和訳を入れる。
・ワークシート上に英単語表示欄と、回答入力欄を作る。
・回答を入力し、答えあわせボタンをおす。正解しないと次へ進めない。(メッセージボックスで「誤りです」と表示させる)
・次問へのボタンをクリックすると新しい問題が表示される。(英単語は100問のうちからランダムに表示されるようにする)
・終了ボタンを押すと、100問中何問出来たかをワークシート上に表示させる。(50問で諦めた場合でも/100表記でかまいません)
VBAしかわからないので、必ずVBAでお願いします。
多少難しくても、頑張りますのでよろしくお願いします。
No.3ベストアンサー
- 回答日時:
すみません、Excelブックは回答に添付できないんですね・・
ですので、VBのマクロスクリプト部分を記載し、Excelの画面を添付します。
-----------------------------------------------------
Dim nQuestions
Dim nTarget
Dim nWaitFlag
Dim nResult(100) ' -1=未実施/0=不正解/1=正解
Dim nCount
' 「開始」ボタン押下処理
Private Sub Button_Start_Click()
Dim nLoop1
' 登録されている問題数の取得
nQuestions = Worksheets("問題集").Cells(1, 2).Value
' 問題数が 100 問以上の場合は、上限の 100 に補正
If nQuestions > 100 Then
nQuestions = 100
End If
' ボタンの有効&無効化
Button_Start.Enabled = False
Button_Stop.Enabled = True
Button_Saiten.Enabled = True
' テスト結果の初期化
For nLoop1 = 0 To nQuestions - 1
nResult(nLoop1) = -1
Worksheets("問題集").Cells(3 + nLoop1, 4).Value = -1
Next
' 終了問題数のクリア
nCount = 0
' 問題を出題する
Mondai
End Sub
' 「中止」ボタン押下処理
Private Sub Button_Stop_Click()
MsgBox ("テストが途中で終了しました" & vbCrLf & "点数は " & Worksheets("問題集").Cells(2, 2).Value & " / " & Worksheets("問題集").Cells(1, 2).Value & " 点です")
Button_Start.Enabled = True
Button_Stop.Enabled = False
Button_Saiten.Enabled = False
End Sub
' 「採点」ボタン押下処理
Private Sub Button_Saiten_Click()
Dim strAnswer
Dim strInput
' 待機フラグを False にする
nWaitFlag = False
' 回答をセルから取得して半角&小文字に変換
strAnswer = StrConv(StrConv(Worksheets("問題集").Cells(3 + nTarget, 3).Value, vbNarrow), vbLowerCase)
' 入力値をフォームから取得して半角&小文字に変換
strInput = StrConv(StrConv(TextBox_Kotae.Value, vbNarrow), vbLowerCase)
If strAnswer = strInput Then
Worksheets("問題集").Cells(3 + nTarget, 4).Value = 1
nResult(nTarget) = 1
MsgBox ("正解!")
Else
Worksheets("問題集").Cells(3 + nTarget, 4).Value = 0
nResult(nTarget) = 0
MsgBox ("不正解!")
End If
If nCount >= nQuestions Then
MsgBox ("すべての問題が終了しました" & vbCrLf & "点数は " & Worksheets("問題集").Cells(2, 2).Value & " / " & Worksheets("問題集").Cells(1, 2).Value & " 点です")
' ボタンの有効&無効化
Button_Start.Enabled = True
Button_Stop.Enabled = False
Button_Saiten.Enabled = False
Else
Mondai
End If
End Sub
' 問題を1問出題する処理
Private Sub Mondai()
If nCount >= nQuestions Then
Else
' 実施問題数のカウントアップ
nCount = nCount + 1
' 待機フラグの初期化
nWaitFlag = True
' 問題をランダムに選出(すでに終了済み問題の場合は再度乱数発生)
Do
nTarget = Int(Rnd * nQuestions)
Loop Until nResult(nTarget) = -1
' 問題欄に和訳を表示
TextBox_Wayaku.Value = Worksheets("問題集").Cells(3 + nTarget, 2).Value
' 回答欄を初期化する
TextBox_Kotae.Value = ""
End If
End Sub
Private Sub Label2_Click()
End Sub
Private Sub TextBox_Wayaku_Change()
End Sub
Private Sub TextBox_Kotae_Change()
End Sub
-----------------------------------------------------
![「VBAで単語テストを作りたいんですが…」の回答画像3](http://oshiete.xgoo.jp/_/bucket/oshietegoo/images/media/2/827378_5497ef89f1db9/M.jpg)
No.4
- 回答日時:
もう1枚の画面を添付します。
![「VBAで単語テストを作りたいんですが…」の回答画像4](http://oshiete.xgoo.jp/_/bucket/oshietegoo/images/media/6/827378_5497dfb6a684a/M.jpg)
No.2
- 回答日時:
試しに作ってみました。
こんな感じでどうでしょうか?
(以下、添付のExcelを見てください)
「問題集」シートに和訳&単語を入力して保存します。
このシートの黄色い箇所は自動で使うので手を加えないでください。
問題数、正解数は自動集計されます。(行、列の削除はしないように)
問題数が100より多い場合は、VBAの処理で100に補正します。
次に、「テスト」シートで「開始」ボタンを押すと、自動でランダム和訳欄に問題が出ます。
回答欄に単語を入力し、「採点」で正解・不正解の判定をし、次の問題へ進みます。
すべて完了すると合計が採点されます。
途中、「中止」を押すと、途中までの実績で採点されます。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) Excelヘルプの原文を表示する最速の方法(手順)には? 1 2023/08/11 11:30
- Visual Basic(VBA) VBA 複数のブックに同じ列を表示させる方法 2 2022/07/20 23:49
- Visual Basic(VBA) VBAで早押しゲームを作りたい 4 2022/05/12 13:46
- C言語・C++・C# C言語初心者 構造体 課題について 2 2023/03/10 19:48
- Windows 10 Google日本語入力について 3 2022/10/20 15:51
- 高校受験 英語の偏差値が上がるきっかけ 6 2023/06/29 02:00
- 高校受験 中3 面接シートの中学校のときに教科等以外の活動に対して、どのような意欲をもって取り組みましたか。 1 2022/12/05 22:04
- 大学受験 英単語帳について質問です。 たくさんの回答お待ちしております。 現在高3、産近甲龍志望です。 現在タ 5 2023/08/21 11:50
- Excel(エクセル) エクセルで”入力シート”の文字書式の変更を”出力シート”で同じ文字書式で印刷したいです。VBA希望 4 2023/04/24 11:07
- 英語 ソシュール言語観による品詞、単語、辞書理解の誤り 4 2022/11/24 12:27
関連するカテゴリからQ&Aを探す
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Eclipseでクリーンが出来ない
-
VBAで一時中断したプログラムの...
-
DataGridViewのチェックボック...
-
EXCEL2010でセルが編集中かを判...
-
複数のSubmitボタンをname属性...
-
c# 文字列の最後から1文字削除...
-
最新ページを表示する際のF5...
-
javaでの電卓の作り方
-
javaのメイン関数 public stati...
-
Ctrlキーを押しながらのダブル...
-
SPREADでカーソルの位置を1行目...
-
VB.NETでボタンクリックイベン...
-
「alt+←」を無効にする方法は?
-
MEDIAS N-04DのFactoryReset
-
javascript 別ウィンドウを開...
-
VBのこのコードの意味を教えて...
-
JSPでメッセージボックスを表示...
-
C#でボタンの制御をしたいので...
-
Javascriptで動くボタンを作りたい
-
最大化ボタンと最小化ボタンを...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
c# 文字列の最後から1文字削除...
-
DataGridViewのチェックボック...
-
VBAで一時中断したプログラムの...
-
グリッドビューでのチェックボ...
-
SPREADでカーソルの位置を1行目...
-
JSPでメッセージボックスを表示...
-
ブラウザの×ボタン(閉じるボタ...
-
JSPでボタンを押したら、文字が...
-
Eclipseでクリーンが出来ない
-
最大化ボタンと最小化ボタンを...
-
Ctrlキーを押しながらのダブル...
-
メール添付されたPDFファイルが...
-
EXCEL2010でセルが編集中かを判...
-
今更、VBAでRPA、キーボード操...
-
CheckBoxをボタン形式にして押...
-
Fancyboxのiframe内に閉じるボタン
-
asp.net メッセージボックス表...
-
javascript 別ウィンドウを開...
-
エクセルにカウンターを設置したい
-
Excel:「フォーム」のボタンで...
おすすめ情報