質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.51%
VBA

VBAはオブジェクト指向プログラミング言語のひとつで、マクロを作成によりExcelなどのOffice業務を自動化することができます。

Q&A

解決済

3回答

2317閲覧

Excel VBA のe-learningに関する質問

ishii_tetsuro

総合スコア9

VBA

VBAはオブジェクト指向プログラミング言語のひとつで、マクロを作成によりExcelなどのOffice業務を自動化することができます。

0グッド

1クリップ

投稿2016/03/25 01:48

Windows7(32ビット) の環境でExcel2010 VBAを使って下記のような
e-learningの問題を作りたいと思っていますので、どなたかお分かりになる方、
ご教示よろしくお願いいたします。
もしくはExcel VBAでe-learning用に作られたプログラムで参考にできる
サイトがあれば教えてください。

例)
問題文の空欄に、選択肢から適切な英単語を選んで英文を完成させなさい。

(問題文)
An artifical intelligence program has defeated its human ( ) ( ) ( )
( ) ( ) in the ancient board game of "go".

(訳)
人口知能のプログラムが人間の対戦相手を、古来のボードゲームである囲碁の5番勝負において破りました。

■選択肢
in, a, opponent, series, five-game

ボタン:[採点]

1)利用者にマウスクリックで英単語を選択させる。
2)英文の空欄に選択された単語が入る。
3)採点ボタンを押すと正解を点数(1~5)で表示する。
このような動作を想定しています。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答3

0

ベストアンサー

ご自分で「どこまではできた」けれど「どこで詰まった」という情報がまったくなく、「もしくはサイト紹介」の記載がなければある意味丸投げの質問でしたので、本来コード提示はすべきではないのでしょうが。。。

「括弧の穴埋め問題」という部分に興味がわいてしまいましたので、そこだけ簡単なものを作ってみました。

ユーザーフォームにラベル(lblQ)とボタン6個(cmdParts1~6)を配置している前提です。

VBA

1Option Explicit 2 3'問題番号 4Dim piNo As Integer 5'正答 6Dim psTrue() As String 7Dim piTrueCnt As Integer 8'回答候補(6個まで) 9Dim psParts(6) As String 10Dim piPartsCnt As Integer 11'回答入力 12Dim piAns() As Integer 13Dim piAnsCnt As Integer 14 15Private Sub UserForm_DblClick(ByVal Cancel As MSForms.ReturnBoolean) 16 '初期化 17 Call Init 18 '現在の問題を再表示 19 Call LoadQ 20End Sub 21 22Private Sub UserForm_Initialize() 23 '初期化 24 Call Init 25 '最初の問題を表示 26 piNo = 1 27 Call LoadQ 28 29End Sub 30 31Private Sub Init() 32 '初期化 33 lblQ.Caption = "" 34 cmdParts1.Caption = "" 35 cmdParts2.Caption = "" 36 cmdParts3.Caption = "" 37 cmdParts4.Caption = "" 38 cmdParts5.Caption = "" 39 cmdParts6.Caption = "" 40 41 cmdParts1.Enabled = True 42 cmdParts2.Enabled = True 43 cmdParts3.Enabled = True 44 cmdParts4.Enabled = True 45 cmdParts5.Enabled = True 46 cmdParts6.Enabled = True 47 48 cmdParts1.Visible = False 49 cmdParts2.Visible = False 50 cmdParts3.Visible = False 51 cmdParts4.Visible = False 52 cmdParts5.Visible = False 53 cmdParts6.Visible = False 54 55 Dim i As Integer 56 For i = 0 To UBound(psParts) 57 psParts(i) = "" 58 Next 59 piPartsCnt = 0 60 61End Sub 62 63Private Sub NextQ() 64 '次の問題を表示 65 piNo = piNo + 1 66 Call LoadQ 67End Sub 68 69Private Sub LoadQ() 70 71 If Cells(piNo + 1, 1) = "" Then 72 '問題番号がなければ終了 73 MsgBox "終了です" 74 End 75 End If 76 77 Call Init 78 79 '正答取得 (例:"3,1,4,5,2" ⇒ 要素数5この配列を作成) 80 psTrue = Split(Cells(piNo + 1, 3), ",") 81 piTrueCnt = UBound(psTrue) + 1 82 83 '入力回答の初期化 84 ReDim piAns(piTrueCnt) 85 Dim i As Integer 86 For i = 0 To UBound(piAns) 87 piAns(i) = 0 88 Next 89 piAnsCnt = 0 90 91 '回答候補取得(最大6個) 92 Dim iCol As Integer 93 piPartsCnt = 0 94 For iCol = 4 To 9 95 If Cells(piNo + 1, iCol) = "" Then 96 Exit For 97 End If 98 psParts(piPartsCnt) = Cells(piNo + 1, iCol) 99 piPartsCnt = piPartsCnt + 1 100 Next 101 102 '問題文表示 103 Call DispQ 104 105 'ボタンに回答候補を表示 106 cmdParts1.Caption = psParts(0) 107 cmdParts2.Caption = psParts(1) 108 cmdParts3.Caption = psParts(2) 109 cmdParts4.Caption = psParts(3) 110 cmdParts5.Caption = psParts(4) 111 cmdParts6.Caption = psParts(5) 112 113 '使うボタンだけ表示 114 If piPartsCnt >= 1 Then cmdParts1.Visible = True 115 If piPartsCnt >= 2 Then cmdParts2.Visible = True 116 If piPartsCnt >= 3 Then cmdParts3.Visible = True 117 If piPartsCnt >= 4 Then cmdParts4.Visible = True 118 If piPartsCnt >= 5 Then cmdParts5.Visible = True 119 If piPartsCnt >= 6 Then cmdParts6.Visible = True 120 121End Sub 122 123Private Sub DispQ() 124 '問題文を画面に表示 125 Dim strText As String 126 Dim i As Integer 127 Dim strAns As String 128 '問題文取得 129 strText = Cells(piNo + 1, 2) '例:「あい{1}うえ{2}{3}おかき」⇒「あい()うえ()()おかき」 130 For i = 1 To piTrueCnt 131 strAns = "" 132 '回答入力済みの場合は括弧内に記入 133 If piAns(i) > 0 Then strAns = psParts(piAns(i) - 1) 134 strText = Replace(strText, "{" & CStr(i) & "}", "( " & strAns & " )") 135 Next 136 137 lblQ.Caption = strText 138 139End Sub 140 141Private Sub cmdParts1_Click() 142 Call subAnsAdd(1) 143 cmdParts1.Enabled = False 144End Sub 145Private Sub cmdParts2_Click() 146 Call subAnsAdd(2) 147 cmdParts2.Enabled = False 148End Sub 149Private Sub cmdParts3_Click() 150 Call subAnsAdd(3) 151 cmdParts3.Enabled = False 152End Sub 153Private Sub cmdParts4_Click() 154 Call subAnsAdd(4) 155 cmdParts4.Enabled = False 156End Sub 157Private Sub cmdParts5_Click() 158 Call subAnsAdd(5) 159 cmdParts5.Enabled = False 160End Sub 161Private Sub cmdParts6_Click() 162 Call subAnsAdd(6) 163 cmdParts6.Enabled = False 164End Sub 165 166Private Sub subAnsAdd(iNo As Integer) 167 '入力した回答候補番号を格納 168 piAnsCnt = piAnsCnt + 1 169 piAns(piAnsCnt) = iNo 170 '画面再表示 171 Call DispQ 172End Sub

問題文はシートから取得するようになっています。
どう記載すれば取得できるのかはコード上にヒントも書いてありますので、頑張って解析してみてください。

投稿2016/03/29 03:46

jawa

総合スコア3013

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

ishii_tetsuro

2016/03/31 07:31

コードまで記入して頂きありがとうございました。初めての投稿のため要領がわからず丸投げとなったことをお詫びします。現在、e-learningを問題の出し方に応じてプログラムをいくつか検討しています。質問を具体的に出すことができるようになりましたらまた投稿させて頂きます。
guest

0

全画面表示にしてやると、見た目が良くなると
思います。

http://www.vba-ie.net/sp/operation/windowsfullscreen.html

また、触らないで欲しいところは
保護をかけておくとさらににe-learingみたいになってきます。

http://www.becoolusers.com/excel/lock-cell.html

投稿2016/03/25 10:22

you-

総合スコア25

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

ishii_tetsuro

2016/03/31 07:31

めての投稿のため要領がわからず丸投げとなったことをお詫びします。現在、e-learningを問題の出し方に応じてプログラムをいくつか検討しています。質問を具体的に出すことができるようになりましたらまた投稿させて頂きます。
guest

0

4択問題

探したら出てきましたが、イメージはこんな感じでしょうか。
(ソース自体はあまり参考にならなさそうですが・・)

簡単にこんな仕様だと思います。
・問題データはシートで保持する
・問題データには答え、選択肢が紐づく
・シートにより、問題の種類が異なり、ユーザは問題の種類を選ぶことができる

VBA クイズ
VBA 4択

等で検索するといろいろ出てくると思います。

投稿2016/03/25 06:39

編集2016/03/25 06:42
lilithchan

総合スコア249

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

ishii_tetsuro

2016/03/31 07:32

初めての投稿のため要領がわからず丸投げとなったことをお詫びします。現在、e-learningを問題の出し方に応じてプログラムをいくつか検討しています。質問を具体的に出すことができるようになりましたらまた投稿させて頂きます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.51%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問