ウォーターサーバーとコーヒーマシンが一体化した画期的マシン >>

簡単なクイズ表示方法を探しています。
考えた方法。
エクセルをデータベース。A列に問題。B列に回答。
例えばパワーポイントの白紙画面に問題を表示。
その画面をクリックしたり、スペースキーを押すなどすると答えを表示。
終わったら次の問題へ。
という流れです。
できればエクセルデータベースの行は、ランダムで出題できると嬉しいです。
正誤の判断をPCにやらせないので、簡単にできそうな気がするのです。
なにぶんオフィス系ソフトに弱いので教えてください。

このQ&Aに関連する最新のQ&A

乱数 とは」に関するQ&A: 乱数とは・・・?

A 回答 (3件)

No2です。

自分で提示して読み直したのですが。
 A  B  C
番号 質問 答え
1
2
3
のB1セルには =COUNTA(A:A)の関数を入れていたと思います。従って
 A  B  C
空白 COUNTA関数     
1
2
にして先のVBA確認してください。或いは
mondaisu = Sheets("Sheet2").Range("B1").Value
の部分をCOUNTA関数を入れたセルに変更してしてください。
    • good
    • 0

おもしろそうだったので、マクロ組んで見ました。

準備として
Sheet2に
 A  B  C
番号 質問 答え
1
2
3
4
5
・・・
と番号をいれて質問と答えを準備します。
別シートにマクロ起動のボタンを作成
モジュールに
Declare Function GetAsyncKeyState Lib "User32.dll" (ByVal vKey As Long) As Long
Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)
Sub ボタン1_Click()
Sheets("Sheet2").Columns("A:A").Replace What:=Range("A1").Value, Replacement:=""
mondaisu = Sheets("Sheet2").Range("B1").Value
If mondaisu < 2 Then
MsgBox "質問が少なくなりました。"
Exit Sub
End If
For i = 1 To 10000
If GetAsyncKeyState(2) <> 0 Then
Exit For
Else
Range("A1").Value = WorksheetFunction.Small(Sheets("Sheet2").Columns("A:A"), Int(Rnd() * mondaisu) + 1)
Sleep (50)
End If
Next
End Sub
をコピィして実行します。
A1セルに問題の番号が次々に変わります。
停止するには、マウスを右クリックします。
A1セルに問題の番号がでますので
B1セルには、入力規則で 問題 と 答え のいずれかが選択できるようにして

表示したいセルには =VLOOKUP(A1,Sheet2!A:C,MATCH(B1,Sheet2!A2:C2))
といれておけば、B1で 問題を選択したら 問題 が
答え を選択したら 答えになるます。

上記マクロを実行するたびに、一度でた問題の番号が消えますので、重複して同じ問題がでないようにしました。
    • good
    • 0

Sheet1のA1~A100に問題、B1~B100に回答を書くとして。



Sheet1の例えばC1に

=INT(RAND()*99)+1

こうすると、1~100の乱数が得られます。
200までなら =INT(RAND()*199)+1 ですね。

で、Sheet2をクリックして白紙を開き、例えばそこのA1に

=INDIRECT("Sheet1!A"&Sheet1!C1)

と書くと問題が表示されます。一方Sheet3のA1には

=INDIRECT("Sheet1!B"&Sheet1!C1)

とすると、同じ問題の答えが出てきます。

問題はSheet2、答えはSheet3ですから同時には見れないですよね。
Sheetを切り替えると、問題と答えが参照できます。気になるなら
Sheet1を非表示にする(シート名上で右クリックするとメニューが
出てきます)と、問題一覧は見られません。

で、問題を切り替えるには[f9]を押してください。

マクロを使うともっときれいにできますが、マクロを使わずにこの
方法でも「シートを切り替えるだけでは乱数の再計算はしない」と
言うExcelの特性から、可能になります。
    • good
    • 0

このQ&Aに関連する人気のQ&A

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

このQ&Aを見た人はこんなQ&Aも見ています

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

Qエクセルのマクロでゲームを作成したいのですが

タイトルの通りです office2002ですが visual vasic editorに入力しています。
Sub quiz1()
MsgBox "[OK]ボタンを押すと、なぞなぞが始まります"
MsgBox "自分が動物だと言っているような飲み物は?"
MsgBox "サイダー"
MsgBox "話をすることの大好きな道具は?"
MsgBox "シャベル"
MsgBox "やぶれば、やぶるほど、ほめられるものは?"
MsgBox "記録"
End Sub
と入力しましたが メッセージボックスのタイトル部分が Microsoft Excelとなっていますが 例えば "問題1"とかに変えたいのですが 
どうすればいいのでしょうか お願いします

Aベストアンサー

おもしろそうなので、寄せてもらいます。Sheet2に、データをセットして、そこから問題と答えを呼び出します。Sheet2の1列目は、問題番号、2列目は問題、3列目は答えとして、2 行目から、データが入っているとします。

次のコードを、標準モジュールにコピペしてください。


Sub quiz()
Dim ans As Variant
Dim Question, Answer, H(3) As String
Dim i As Integer
Dim WS As Object
Set WS = Worksheets("Sheet2")
H(1) = "ぴんぽ~ん!"
H(2) = "当たり!"
H(3) = "残念"
MsgBox "[OK]ボタンを押すと、なぞなぞが始まります", , "クイズ"
i = 1
While WS.Cells(i + 1, 2) <> ""
Question = WS.Cells(i + 1, 2).Value
Answer = WS.Cells(i + 1, 3).Value
ans = InputBox(Question, "問題" & i)
If ans = Answer Then
MsgBox H(1), , H(2)
Else
MsgBox Answer & "でした。", vbCritical, H(3)
End If
i = i + 1
Wend
End Sub

おもしろそうなので、寄せてもらいます。Sheet2に、データをセットして、そこから問題と答えを呼び出します。Sheet2の1列目は、問題番号、2列目は問題、3列目は答えとして、2 行目から、データが入っているとします。

次のコードを、標準モジュールにコピペしてください。


Sub quiz()
Dim ans As Variant
Dim Question, Answer, H(3) As String
Dim i As Integer
Dim WS As Object
Set WS = Worksheets("Sheet2")
H(1) = "ぴんぽ~ん!"
H(2) = "当たり!"
H(3) = "残念"
MsgBox "[OK]ボタンを押...続きを読む

Q4択問題のプログラムでランダムに出題する処理で困っています

現在私は画像のような4択の問題を解答し最後に何問正解していたかを表示するプログラムを作成しています。

解答を選択して「次の問題」ボタンをクリックすれば次の問題に移行する・・・というような流れです。

データテーブルに「問題(Question)」「選択肢(Answer1~4)」「解答(SelectAnswr)」「正解(CorrectAnswer」「正解の解説(Explanation)*今質問中では使用させません」を格納しています。

最終的な目標はデータテーブルに問題を300問用意しその中からランダムに100問出題して最後に結果を表示するプログラムを作成することです。

今どうすればランダムに出題しつつ同じ問題が出題されないようにするプラグラムを組めばいいのか壁にぶつかっています。

下記が「次の問題」ボタンのプログラムです。


Private Sub NextQuestion_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles NextQuestion.Click

' i が -1 のとき(つまり、初回のクリック)
If i = -1 Then
'選択肢を選択可能にする
GroupBox1.Enabled = True

'NextQuestionのテキスト変換
NextQuestion.Text = "次の問題"
' i が -1以外のとき(つまり、回答後のクリック)
Else
'正誤確認
If Answer1.Checked = True Then
DataSet1.DataTable1(i).SelectAnswer = "ア"
ElseIf Answer2.Checked = True Then
DataSet1.DataTable1(i).SelectAnswer = "イ"
ElseIf Answer3.Checked = True Then
DataSet1.DataTable1(i).SelectAnswer = "ウ"
ElseIf Answer4.Checked = True Then
DataSet1.DataTable1(i).SelectAnswer = "エ"
End If

If DataSet1.DataTable1(i).SelectAnswer = DataSet1.DataTable1(i).CorrectAnswer Then
total = total + 1
End If

End If

i += 1 ' i をインクリメント(出題を次に進める)

' i が10になった = 回答が10問終わった
If i = 10 Then
MsgBox("あなたの正解数は10門中" & total & "問です!")
Me.Close()
Else
'問題の読み込み
Question.Text = DataSet1.DataTable1(i).Question
Answer1.Text = DataSet1.DataTable1(i).Answer1
Answer2.Text = DataSet1.DataTable1(i).Answer2
Answer3.Text = DataSet1.DataTable1(i).Answer3
Answer4.Text = DataSet1.DataTable1(i).Answer4

'ラジオボタンを初期位置に戻す
Answer1.Checked = True
End If


End Sub

*変数iはPublicで宣言しています。
*最終目標は100問出題なのですが今は10問で動くプログラムを作成しています。

わかるかたがいましたら知恵をかしてください。
お願いします。

現在私は画像のような4択の問題を解答し最後に何問正解していたかを表示するプログラムを作成しています。

解答を選択して「次の問題」ボタンをクリックすれば次の問題に移行する・・・というような流れです。

データテーブルに「問題(Question)」「選択肢(Answer1~4)」「解答(SelectAnswr)」「正解(CorrectAnswer」「正解の解説(Explanation)*今質問中では使用させません」を格納しています。

最終的な目標はデータテーブルに問題を300問用意しその中からランダムに100問出題して最後に結果を表...続きを読む

Aベストアンサー

まず「次の問題に進む時、問題の参照にiを使わず、乱数で求めた0~299の値を使う」と言うように変更しましょう。

そして「初期化時や無回答で次の問題に進んだ時の、解答(SelectAnswr)にセットする値を工夫する事で、未出題か出題済みか判定する」と言う処理をして、問題の重複を避けましょう。

ヒントだけ。

ヒントは以下の通り。

ヒント1.
「解答(SelectAnswr)」に入る値を「回答された"ア"~"エ"」「無回答でスキップした"S"」「まだ出題してない""」の3種類にする。
(無回答でのスキップが出来ない、つまり、選択肢のどれかを選ばないと「次の問題」ボタンが押せない、と言う処理の場合「無回答でスキップした"S"」は不要)

ヒント2.
最初の初期化時に「300件全部、解答(SelectAnswr)の値を""にして、すべて未出題」にする。

ヒント3.
出題時に問題を参照する時「DataSet1.DataTable1(i).ほげほげ」のように「(i)」で参照するのをやめる。
代わりに、乱数で「解答(SelectAnswr)の値が、まだ出題してない""になっている問題」を探す。
つまり「乱数で0~299の値を作り、解答(SelectAnswr)の値が""なら、その乱数が出題番号になり、解答(SelectAnswr)の値が""じゃないなら乱数の作り直し」をすればよい。

ヒント4.
変数の「i」は「最初は-1」「1題出題するごとに1を足す」「100題目が終わったら終了」の目的以外には使わない。
つまり「DataSet1.DataTable1(i).ほげほげ」っていう書き方を全部無くす。

ヒント5.
選択肢を選ばずに「次の問題」を押してしまった場合「解答(SelectAnswr)」の値が「まだ出題してない""」のまま次に進んでしまっては困るので、次に進む前に「解答(SelectAnswr)の値を"S"にする」と言う処理をして「出題済み」にする。
(無回答でのスキップが出来ない、つまり、選択肢のどれかを選ばないと「次の問題」ボタンが押せない、と言う処理の場合、この処理は不要)

ヒントは以上。

なお、この方法は「300問中100問」などのように、最後の100問目に近い時も未出題の問題が多い場合は問題ありませんが「すべての問題を出題する」などの場合、最後の問題に近くなると未出題の問題が減り「残りの問題が乱数にヒットせず、次の問題に進む際に時間がかかる」と言う欠点があるので注意して下さい。今回のように「300問中100問」であれば問題はありません。

まず「次の問題に進む時、問題の参照にiを使わず、乱数で求めた0~299の値を使う」と言うように変更しましょう。

そして「初期化時や無回答で次の問題に進んだ時の、解答(SelectAnswr)にセットする値を工夫する事で、未出題か出題済みか判定する」と言う処理をして、問題の重複を避けましょう。

ヒントだけ。

ヒントは以下の通り。

ヒント1.
「解答(SelectAnswr)」に入る値を「回答された"ア"~"エ"」「無回答でスキップした"S"」「まだ出題してない""」の3種類にする。
(無回答でのスキップが...続きを読む

QExcelのマクロでボタンを押すと数が1足されるようにするには?

とあるイベントで
来客者の人数を調べたいと思いました。
紙に正の字を書いていってもいいのですが
折角なので、後のグラフをつくったりする作業がやりやすいように
PCで処理しようと思いました。
しかし、いちいち数をけして打ちなおしていくのは
あまりにも面倒です・・・
街灯の人数調査(?)の人がもってる
カウントできる機械のようなものも持っていませんし・・・

例えばマクロを使用し
ボタンを押すとセル内の数が1足されるように
設定したいのですがどうすればよいでしょう?
もしくは、そういったことは可能でしょうか。

ワンクリック(もしくはそれに準ずる簡単さ)で
カウントがとれればマクロでなくても構わないです。
Excelあまりいじったことがないので
教えていただければ幸いです。

また、マクロでそういったことができないのであれば
Excel以外でもカウントをとることができるものがあれば
合わせて教えていただけると嬉しいです。
よろしくおねがいします。

Aベストアンサー

Range("A1") = Range("A1") + 1

と書いたマクロを適当なボタンに登録して下さい。
A1に初期値を記入しておけば、ボタンをクリックする毎に1ずつ加算されます。

Q▲特定のセルからランダムに抽出しテストを作成▲

いつもお世話になっております。
エクセルのVBAについて教えて頂きたく書き込みいたします。
日本語が意味不明であれば、より詳しく記載しますのでご教授願います。

1つのエクセルの中に4つのシートがあります。
【Top(sheet1)、問題(sheet2)、初級(sheet3)、中級(sheet4)、上級(sheet5)】

Topにはスタートボタンがあり、クリックすることにより問題シートへと移動し、別シートより問題を抽出したいです。

問題シート内のC3~C17に問題が、D3~D17に(問題に付随した)ヒントが
ランダムに抽出されるようにマクロを作成したいです。

また問題、ヒント、答えは初級、中級、上級、それぞれのシートに(20問ずつぐらい)記載をしています。
初級から10問、中級から3問、上級から2問と抽出をしたいです。
答えに回答を入力することにより正解であればセルが青く、間違えであればセルが赤くなるようにしたいです。

簡易ではありますが、エクセルの画像も添付させてもらいます。
恐れ入りますがご教授願います。

Aベストアンサー

こんばんは!
面白そうなのでトライしてみました。

Sheet6を作業用のSheetとして追加・使用するようにしていますので、
Book上にはお示しの5つのSheetが存在しているという前提です。
尚、各Sheetともお示しの配置通りとします。

ます「TOP」Sheetにコマンドボタンを挿入 → コマンドボタンのコードを↓にしてみてください。

Private Sub CommandButton1_Click()
Worksheets("問題").Select
Worksheets("問題").Range("E3:E17").Interior.ColorIndex = xlNone
Call Sample1
End Sub

次にAlt+F11キー → メニュー → 挿入 → 標準モジュール → VBE画面に
↓のコードをコピー&ペーストしてください。

Sub Sample1() 'この行から
Dim i As Long, lastRow As Long, c As Range
Dim wS2 As Worksheet, wS3 As Worksheet, wS4 As Worksheet, wS5 As Worksheet, wS6 As Worksheet
Set wS2 = Worksheets("問題")
Set wS3 = Worksheets("初級")
Set wS4 = Worksheets("中級")
Set wS5 = Worksheets("上級")
Application.ScreenUpdating = False
If Worksheets.Count <> 6 Then
Worksheets.Add after:=Worksheets(Worksheets.Count)
End If
Set wS6 = Worksheets(Worksheets.Count)
wS6.Visible = xlSheetHidden
wS6.Range("A:C").Clear
wS2.Range("C3:E17").ClearContents
With wS3
lastRow = .Cells(Rows.Count, "B").End(xlUp).Row
.Range("E:F").Insert
Range(.Cells(2, "E"), .Cells(lastRow, "E")).Formula = "=RAND()"
Range(.Cells(2, "F"), .Cells(lastRow, "F")).Formula = "=RANK(E2,E:E)"
For i = 1 To 10
Set c = .Range("F:F").Find(what:=i, LookIn:=xlValues, lookat:=xlWhole)
c.Offset(, -4).Resize(, 3).Copy
wS6.Activate
ActiveSheet.Cells(Rows.Count, "A").End(xlUp).Offset(1).PasteSpecial Paste:=xlPasteValues
Next i
.Range("E:F").Delete
End With
With wS4
.Range("E:F").Insert
lastRow = .Cells(Rows.Count, "B").End(xlUp).Row
Range(.Cells(2, "E"), .Cells(lastRow, "E")).Formula = "=RAND()"
Range(.Cells(2, "F"), .Cells(lastRow, "F")).Formula = "=RANK(E2,E:E)"
For i = 1 To 3
Set c = .Range("F:F").Find(what:=i, LookIn:=xlValues, lookat:=xlWhole)
c.Offset(, -4).Resize(, 3).Copy
wS6.Activate
ActiveSheet.Cells(Rows.Count, "A").End(xlUp).Offset(1).PasteSpecial Paste:=xlPasteValues
Next i
.Range("E:F").Delete
End With
With wS5
.Range("E:F").Insert
lastRow = .Cells(Rows.Count, "B").End(xlUp).Row
Range(.Cells(2, "E"), .Cells(lastRow, "E")).Formula = "=RAND()"
Range(.Cells(2, "F"), .Cells(lastRow, "F")).Formula = "=RANK(E2,E:E)"
For i = 1 To 2
Set c = .Range("F:F").Find(what:=i, LookIn:=xlValues, lookat:=xlWhole)
c.Offset(, -4).Resize(, 3).Copy
wS6.Activate
ActiveSheet.Cells(Rows.Count, "A").End(xlUp).Offset(1).PasteSpecial Paste:=xlPasteValues
Next i
.Range("E:F").Delete
End With
wS6.Range("A2:B16").Copy
wS2.Activate
ActiveSheet.Range("C3").Select
Selection.PasteSpecial Paste:=xlPasteValues
wS2.Columns.AutoFit
wS2.Range("E3").Select
Application.ScreenUpdating = True
End Sub 'この行まで

最後に「問題」SheetのSheet見出し上で右クリック → コードの表示 → VBE画面に
↓のコードをコピー&ペースト → Excel画面に戻り「TOP」Sheetのコマンドボタンをクリックし
「問題」SheetのE列に答えを入力してみてください。

Private Sub Worksheet_Change(ByVal Target As Range) 'この行から
Dim c As Range
If Intersect(Target, Range("E3:E17")) Is Nothing Or Target.Count > 1 Then Exit Sub
With Worksheets(6)
If Target <> "" Then
Set c = .Range("A:A").Find(what:=Target.Offset(, -2), LookIn:=xlValues, lookat:=xlWhole)
If Target = c.Offset(, 2) Then
Target.Interior.ColorIndex = 8 '←水色
Else
Target.Interior.ColorIndex = 3
End If
Else
Target.Interior.ColorIndex = xlNone
End If
End With
End Sub 'この行まで

※ 通常の青だと字が見えにくいので「水色」にしています。m(_ _)m

こんばんは!
面白そうなのでトライしてみました。

Sheet6を作業用のSheetとして追加・使用するようにしていますので、
Book上にはお示しの5つのSheetが存在しているという前提です。
尚、各Sheetともお示しの配置通りとします。

ます「TOP」Sheetにコマンドボタンを挿入 → コマンドボタンのコードを↓にしてみてください。

Private Sub CommandButton1_Click()
Worksheets("問題").Select
Worksheets("問題").Range("E3:E17").Interior.ColorIndex = xlNone
Call Sample1
End Sub

次にAlt+F11キ...続きを読む

Qエクセルで条件に一致したセルの隣のセルを取得したい

下のような「得点」という名前のシートがあります。
(「田中」のセルがA1です。)

 [ 田中 ][ 10 ][ 200 ]
 [ 山田 ][ 21 ][ 150 ]
 [ 佐藤 ][ 76 ][ 250 ]
 [ 鈴木 ][ 53 ][ 350 ]

別のシートのA1セルに、「佐藤」と入力すると、

 [ 佐藤 ]

「得点」シートから「佐藤」の列を見つけて、B1、C1に

 [ 佐藤 ][ 76 ][ 250 ]

のように表示させたいのですが、B1、C1にはどのような式を書けば良いのでしょうか。
「得点」シートでは氏名が重複する事はありません。
IF文を使うと思うのですが、いまいち良く分かりませんでした。

よろしくおねがい致します。

Aベストアンサー

こんにちは!
VLOOKUP関数で対応できます。
IF関数と併用すればエラー処理が可能です。

Excel2007以降のバージョンであれば
B1セルに
=IFERROR(VLOOKUP($A1,得点!$A:$C,COLUMN(B1),0),"")
としてC1セルまでオートフィルでコピー!
そのまま下へコピーすると行が2行目以降でも対応できます。

Excel2003までの場合は
=IF($A1="","",VLOOKUP($A1,得点!$A:$C,COLUMN(B1),0))

としてみてください、m(_ _)m

QVisual Basicでクイズを作成!!

Visual Basicでクイズを作成中なんですが、クイズが正解するとポイントが追加するようにしたいんですがどうすればできますか?

Aベストアンサー

#3です。補足いただきありがとうございます。
補足要求した以上、少し加えます。
ただベストとか言うものでは全くありませんので、参考に。
>作成中なんですが
着手しているようだが、私案を書いてみます。
---------
メモ帳で、3択の例. 下記の文章を改行して入力のこと。
問題1 鎌倉幕府を開いたのは次の誰ですか
(1)平 清盛
(2)源 頼朝
(3)北条 時宗
正解 2
・・・
以下問題の数だけ順次1問あたり5行をセットにして、下行へ追加して(5行で1問分)入力して作る。
ファイル保存。テキストで保存になります。
ーーーーー
VBのフォームの上にラベル4個(問い1個+三択の3個、(他に正解・間違い表示1個、合計点数1個など必要と思うが)を貼り付ける。
このソフトを開始したら、上記テキストファイルの5レコードを順次読み、4つのラベルに問題をLabel1、3択をLabel2,3,4
の.Captionとしてセットする。
第5レコードは正解番号として、変数(下記ではseikai)に記憶する。
ラベル2-3のどれかをクリックすると
Private Sub Label1_Click()
If seikai = 1 Then
Label4.Caption = "正解です"
tensu = tensu + 1
Label5.Caption = "合計点数=" & tensu
Else
Label4.Caption = "間違いです"
End If
End Sub
というようなのを、Label2,3,4に入れておく
If seikai = 1 Then
の1は2,3に変える。
「次へ」ボタンを設けておき、クリックすると
次から上記テキストファイルを5レコード読んで、上記の処理を
する。以下繰り返し。「途中終了ボ」タンを作るのも良い。
正解番号を表示する「正解番号」ボタンも作るべきかも。

#3です。補足いただきありがとうございます。
補足要求した以上、少し加えます。
ただベストとか言うものでは全くありませんので、参考に。
>作成中なんですが
着手しているようだが、私案を書いてみます。
---------
メモ帳で、3択の例. 下記の文章を改行して入力のこと。
問題1 鎌倉幕府を開いたのは次の誰ですか
(1)平 清盛
(2)源 頼朝
(3)北条 時宗
正解 2
・・・
以下問題の数だけ順次1問あたり5行をセットにして、下行へ追加して(5行で1問分)入力して作る。
ファ...続きを読む

Qクイズゲームのフォームについて

こんばんは。VB初心者です。
VB6.0を用いてのクイズゲームを作成することになりました。
フォームの内容は以下のようなものです。
・問題文(ラベルorテキストボックス)
・ヒントの動画(MCIコントロール)
・四択選択肢(オプションボタン)
・正解不正解(ピクチャボックス)
・解説(ラベルorテキストボックス)

これを20問作るのですが、フォームを20個作らずに各コントロールの中身だけを変化させていきたいのですが、どのようなプログラムになるのか検討がつきません。
そこで、大まかなプログラムの流れだけでもいいので教えて欲しいです。
また、クイズ作成において参考になるHPがあれば教えて下さい。宜しくお願いします。

Aベストアンサー

20個フォームをつくるなんてやめて~(笑)

クイズは問題数分の配列を用意すればいいです。問題文と答えは
DIM Aestion(20) As String
DIM Kotae(20) as integer

ついでに回答者の結果を格納する配列も用意しましょう。
DIM Kekka(20) As Integer

とりあえず処理の中心は上記3つの配列です。
コードの先頭において、どこでも参照できるようにした方が楽です。

問題文はファイルから読み込む方が汎用性があっていいですが、
初心者だと大変なので、とりあえずはForm_Loadに書いてしまいましょう。
20問は毎回固定になります。

慣れたらQuestionとKotaeの配列を100に増やすとかしてもいいです。
問題文は最初100題書いておいて、20題だけ出題することもできます。

選択肢はオプションボタンとありますが、これは要らない。
最初から4つのボタンを用意して、
それを押下させた方が操作性もいいしコードも楽になります。

何問目の問題かを制御するカウンターもコードの先頭に宣言しましょう。
Dim nanmonme As Integer

これら変数をコードの先頭におくと便利なのは、
VBがイベント駆動型で処理がイベントにまたがってしまうからです。

どこのSub にもFunctionにも属さないコードの先頭におけば
フォームを閉じるまで変数の値はずっと保持されています。

MCIコントロールは最後の最後。
とりあえず20問最後まで動くインタフェースを作ってからの話ですね。

20個フォームをつくるなんてやめて~(笑)

クイズは問題数分の配列を用意すればいいです。問題文と答えは
DIM Aestion(20) As String
DIM Kotae(20) as integer

ついでに回答者の結果を格納する配列も用意しましょう。
DIM Kekka(20) As Integer

とりあえず処理の中心は上記3つの配列です。
コードの先頭において、どこでも参照できるようにした方が楽です。

問題文はファイルから読み込む方が汎用性があっていいですが、
初心者だと大変なので、とりあえずはForm_Loadに書いてしまいましょ...続きを読む

Qパワーポイントでクイズ作成したいのですが

パワーポイントの使い方について教えてください。

結婚式の2次会でクイズをすることになりました。

はじめに4行×4列のマス目をつくり番号(1~16)をつけました。

スライドショー上で各番号をクリックするとハイパーリンクでそれぞれのクイズのスライドに飛ばすことができました。

次のクイズにいくときに、はじめの4X4のマス目に戻ります。

これから先のやり方を教えてください。

1)すでに終わったクイズのマス目の色を変え、ボタンのアイコンを消去したい。
2)クイズのスライドに音楽をつけたい。

クイズの選択は2次会の参加者がするために、あらかじめ予想してスライドを作ることが出来ないので困っています。

パワーポイント自体はプレゼンで使ったことがあるのですが、アニメーションを少し使える程度です。

よろしくお願いします。

Aベストアンサー

> 一度クリックしたボタンは消去されるという

動作設定ボタンを設置した場合ですが、ボタンに対し[終了]>[クリア]の効果を設定しておき、タイミングの設定で、"次のオブジェクトをクリック時に効果を開始">"動作設定ボタン"
とすれば、動作設定ボタンで目的のスライドに飛んだあと、ボタンのあるスライドに戻った時、飛ぶ前の操作で押したボタンは消えます。

この方法が可能かどうかはパワーポイントのバージョンにもよります。私の持っている範囲ですと、Powerpoint2000では不可、Powerpoint2003では可です。

Qexcelで単語テストを作りたい

 PCにexcelが入っているものの全く使ったことのない初心者です。自分用に、手早く英単語の暗記テストを作りたいのですが、効率よく作れる方法、またはテンプレート等がありましたら紹介していただけると助かります。もちろん回答欄で答えられる内容ではないと思うので、参考URLを張っていただけるだけでかまいません。

※単語テストは英単語をみて、よこに日本語訳を書くだけのいたってシンプルなものです。 
       英語       日本語
     1 admit      認める
     2 realize       悟る

のような感じです。よろしくお願いします。

Aベストアンサー

こんにちは。

Excelで作るというのは、なかなか大変です。私も作ったことがあります。

前回、同じような質問をされた方がいますが、あくまでも、ご自身で作るという方針でしたので、私のアドバイスは受け入れてくれませんでした。趣味でもなければ、そのための時間を使うのはもったいないです。高校卒業レベルで4,000語、大学受験で、あと2,000語程度は必要です。

私は、P-Study(フリーウェア)というものをお勧めします。私は、5~6年使っているものです。
いろいろ比較して、これが良いと思いました。Excelでは、SVC を使って、P-Study にインポートします。それと、なるべく例文を加えたほうがよいですね。英語--日本語 は一対一ではありませんから、日本語側の単語を多くしてイメージを作りやすくさせたほうがよいです。

目的が違いましたら、無視してください。

参考URL:http://www.takke.jp/

Qエクセルの表で◎○△×などを点数換算する

エクセルの表で、◎○△×などを使って、値を入力しているのですが、

◎:5点、○:4点 △:3点のように換算して、合計点を出せるようにするにはどうすればいいでしょうか?

もとから◎を5で入力するのではない方法でお願いいたします!

Aベストアンサー

A列に◎○△×とか一列に入っているとして

=COUNTIF(A:A,"◎")*5+COUNTIF(A:A,"○")*4+COUNTIF(A:A,"△")*3

こんな感じでいかがでしょう


このQ&Aを見た人がよく見るQ&A

人気Q&Aランキング