• 締切済み

VBとExcelを使って英単語テストプログラムを作るには?

英単語とその和訳をエクセルシートとして登録し、そこから和訳をランダムに出題して英単語を入力させる。正解なら正解、間違いなら間違いを表示して、新しい問題をランダムに出題させる・・・こんな単純?なプログラムを作成したいです。具体的なソースか、又は参考になるホームページを教えて下さい。よろしくお願いします。

みんなの回答

  • papayuka
  • ベストアンサー率45% (1388/3066)
回答No.3

#1です。 Visual Basic .NET は使った事無いのでアドバイス出来ません。 Visual Basic .NET なら単独でアプリケーションを構築出来る開発言語でしょうから元データはCSVやら独自でバイナリーファイルを作るなりして、 Excel を介在させる必要なんて無いと思うのですが、、、 ロジック的にも既にあがっているサンプルとそう変わらないと思いますけど。 MSのページにExcelを操作するサンプルがありましたので参考にされては? Visual Basic .NET を使用して Microsoft Excel を自動化する方法 http://support.microsoft.com/default.aspx?scid=kb;ja;301982

参考URL:
http://support.microsoft.com/default.aspx?scid=kb;ja;301982
Apprentice
質問者

補足

目的はVisual Basic.netの勉強です。そして英単語を整理するのにはエクセルが便利なのです。それらを両立させかったのですが難しいようですね。

  • imogasi
  • ベストアンサー率27% (4737/17069)
回答No.2

(1)ワークシートに 例えば (A列) (B列) 机 desk 椅子 chair 窓 window 壁 wall 床 floor 戸 door 屋根 roof 庭 garden 門 gate 木 tree そのほか、C列とX1,Y1セルを使います。 (2)フォームを挿入 ツール-マクロ-VBEの画面で メニューの挿入-ユーザーフォームでユーザーフォームを作る (3)ユーザーフォームにコントロールの貼りつけ 右はCaption ラベル:第x問(プログラムで表示) ラベル:日本語 ラベル:日本語(プログラムで表示) ラベル:英語スペルを入力してください ラベル:英語スペル ラベル:正誤 ラベル:正解・間違い(プログラムで表示) ボタン:入力済み ボタン:次問へ テキストボックス:(英語スペル入力用) (4)挿入-標準モジュール Sub test01() d = Range("A65356").End(xlUp).Row Range("c1").EntireColumn.Clear Randomize i = Int(d * Rnd) + 1 UserForm1.Label5.Caption = Cells(i, "A") Cells(i, "c") = 1 Cells(1, "X") = i Cells(1, "Y") = 1 n = 1 UserForm1.Label8.Caption = "第 " & n & " 問" UserForm1.Show End Sub (5)イベント1 「入力済」のボタンのクリックのイベント Private Sub CommandButton1_Click() i = Cells(1, "X") If UserForm1.TextBox1 = Cells(i, "B") Then UserForm1.Label7.Caption = "正解" Else UserForm1.Label7.Caption = "誤り" End If End Sub (6)イベント2 「次問へ」のボタンのクリックのイベント Private Sub CommandButton2_Click() d = Range("A65356").End(xlUp).Row p01: n = Cells(1, "Y") If n >= d Then UserForm1.Label8.Caption = "全問完了" MsgBox "全問完了" UserForm1.Hide Exit Sub End If i = Int(d * Rnd) + 1 If Cells(i, "C") = 1 Then GoTo p01 Else UserForm1.Label5.Caption = Cells(i, "A") Cells(i, "c") = 1 Cells(1, "X") = i n = Cells(1, "Y") n = n + 1 Cells(1, "Y") = n UserForm1.Label8.Caption = "第 " & n & " 問" UserForm1.Label7.Caption = "" UserForm1.TextBox1.Text = "" UserForm1.TextBox1.SetFocus End If End Sub (使い方) test01を実行 英語スペルを入力 「入力済み」をクリック 正解・間違いのどちらかが表示される。 訂正し「入力済み」クリック可能 「次問へ」をクリック ----- あとは改良してください。

Apprentice
質問者

お礼

勉強してみます。ご丁寧な回答ありがとうございました。

Apprentice
質問者

補足

エクセルのVBAではなくて、VisualBasic.netで作成したいのですが同じでしょうか?手順がまだ良くわかりません。もしよろしければ教えて下さい。

  • papayuka
  • ベストアンサー率45% (1388/3066)
回答No.1

ExcelとVBAだけでもっとも単純にやるならこんな感じとか、、、 '------------------------------------------------------------- Dim i As Integer Sub 問題() Dim Result  Result = Array("いぬ", "ねこ", "かえる")  Randomize  i = Int(3 * Rnd)  Range("A1:C1").ClearContents  Range("A1").Value = Result(i) End Sub Sub 回答() Dim Result  Result = Array("dog", "cat", "frog")  If LCase(Range("B1").Value) = Result(i) Then    Range("C1").Value = "OK"  Else    Range("C1").Value = Result(i)  End If End Sub '------------------------------------------------------------- 問題を実行 A1に問題が入る B1に単語を記入 回答を実行

Apprentice
質問者

お礼

勉強してみます。ありがとうございます。

Apprentice
質問者

補足

VisualBasic.netで作成したいのですが、Excelシートとの関連づけが良くわかりません。よろしければ教えて下さい。

関連するQ&A

専門家に質問してみよう