70 likes | 149 Vues
Dim a As Integer, t As Long, r As Integer 'a 乱数時間、 t 出題時の秒数、 'r 解答にかかった秒数 Dim j As String ' 判定の文言 a = Int(Rnd(1) * 8 + 3) ' 時間を乱数で決定、 3 ~ 10(8+3 秒未満 ) 秒の間 t = Timer ' 現在の時間を記録 MsgBox a & " 秒後に OK を押せ! " r = Timer - t ' 解答にかかった時間を算出
E N D
Dim aAs Integer, t As Long, r As Integer 'a 乱数時間、t 出題時の秒数、 'r 解答にかかった秒数 Dim j As String '判定の文言 a = Int(Rnd(1) * 8 + 3) '時間を乱数で決定、3~10(8+3秒未満)秒の間 t = Timer '現在の時間を記録 MsgBox a & "秒後にOKを押せ!" r = Timer - t '解答にかかった時間を算出 j = "誤差" & r - a & "秒 " '解答にかかった時間から出題時間を引いて誤差を算出 If r = a Then j = j & "ジャスト!" If r > a Then j = j & "時間かけ過ぎ!" If r < a Then j = j & "早いよ!" MsgBox j '判定の内容を表示 ListBox1.AddItem (j) 'リストボックスに記録 ListBox1.Clear 'リストボックスのクリア
Dim a(6) As String, mol As String 'a(6) 分子名接頭語、mol 合成した分子名 Dim lb1 As Integer, ib2 As String 'lb1,lb2 リストボックスの内容保存 a(1) = "Meth" '配列を使って接頭語を作成 a(2) = "Eth" a(3) = "Prop" a(4) = "Buth" a(5) = "Pent" a(6) = "Hex" lb1 = ListBox1.Value 'リストボックスの内容をあらかじめ記録 lb2 = ListBox2.Value mol = a(lb1) '接頭語を変数molに設定 lb1:リストボックス1の選択 If CheckBox1.Value = True Then mol = mol & "en" '二重結合にチェックがあったら語尾をenにする Else mol = mol & "an" '飽和炭化水素の場合は語尾をanにする End If If lb2 = "なし" Then mol = mol & "e" '官能基がない場合は語尾をe If lb2 = "アルコール" Then mol = mol & "ol" 'アルコールの場合は語尾をol If lb2 = "アルデヒド" Then mol = mol & "al" 'アルデヒドの場合は語尾をal MsgBox mol ListFillRange A2:A7 ListFillRange B2:B4 上にリストボックスを かぶせて隠している
・オプションボタンの利用 If OptionButton1.Value = True Then a = a & "an" If OptionButton2.Value = True Then a = a & "en" If OptionButton3.Value = True Then a = a & "yn" If OptionButton1.Value = True Then a = Int(Rnd(1) * 6 + 3) If OptionButton2.Value = True Then a = Int(Rnd(1) * 6 + 8) If OptionButton3.Value = True Then a = Int(Rnd(1) * 11 + 20) ・チェックボックスの利用 If CheckBox1.Value = True Then a = a + 1 If CheckBox2.Value = True Then a = a + 1 If CheckBox3.Value = True Then a = a + 1 ・ ・ ・ If a > 5 Then MsgBox "うつ病の可能性が高いです", , "診断結果"
f = Int(Rnd(1) * 3 + 1) If f = 1 Then h = "グー" ElseIf f = 2 Then h = "チョキ" Else h = "パー" End If i = MsgBox(h, 0, "ぽんっ") ・乱数を使ったじゃんけん ・Do~Loopを使ったタイマー t = Timer Do r = Timer - t Cells(6, 4).Value = r Mod 60 Cells(6, 2).Value = r \ 60 Loop While r < a * 60 + b ・セルを変数代わりに使ってプロシージャ間で受け渡し r = Timer Cells(2, 2).Value = r r = Cells(2, 2).Value t = Timer - r If c = Cells(1, 1).Value Then MsgBox r & "秒かかりました"
Timer関数を使うときの注意点 Timer関数は午前0時からの秒数を返す関数 例:午前1時 1(時)×60(分)×60(秒) = 3,600秒 午後6時 18(時)×60(分)×60(秒) =64,800秒 したがって、Integer型の範囲(-32,768~32,767)を超えるため 変数に代入する場合はLong型(-2,147,483,648~2,147,483,647)が適切 Single型やDoubleもOKだが、ミリ秒やナノ秒などの細かい秒数を 使わない限りはLongの方がよい。 ・見えないリストボックスを変数代わりにする リストボックス1と同じ段を選択させる a = ListBox1.ListIndex ListBox2.ListIndex = a TextBox1.Value = ListBox2.Value ListBox1.AddItem (TextBox2.Value) ListBox2.AddItem (TextBox3.Value) 見えるリストボックスに見だし、 見えないリストボックスにメモを記録 Visible False