テストで役立つ登録式デジタル単語帳

かめ(管理人の一人)が学生の頃から積み上げてきたあるものの、集大成ができあがりつつあるため紹介したいと思います。

それは、単語帳です。

 

過去の【かめの甲羅】シリーズは見た目も努力もなかなか積み上げておりますが、今回のは時間をかけて考察した結果を積み上げてきましたので、

一般のかたにも実用的なものと自負しております!

 

※過去のかめの甲羅は、以下のリンクからご参照いただけます。

世界に一つだけのかめの甲羅を作ろう

殺虫剤不使用!お風呂場のチョウバエ対策

 

かめと単語帳

かめは、母親から「学校ではしっかり勉強する」ように言われて育てられましたので、超まじめにテスト勉強に励んでいました。

小学生の頃は遊んでいても特に問題なかったのですが、中学校に入ってからは中間・期末テストといったように特定の時期に集中的にテストを行うようになったため、最初はテストの点が悪くなりました。

テストまでの期間が長いので、授業中にノートをとった内容を前日にちょっと見るぐらいでは、忘れてしまっていてなかなか覚えられなかった記憶があります。

そこでかめがやり始めたのが、

テスト用にテスト範囲の内容を整理して、単語帳形式にして書き直すことでした。

 

かめの家は非常に節約家でしたので、父親が会社から持って帰ってくるA4コピー用紙の裏紙の白いほうを縦に二つに折り、左に問題を書き、折り目の右側に答えを書いて単語帳のように暗記に利用していました。

自ら問題を考えることで頭を使いますので、これが頭に強く残って、ほとんど繰り返しをせずとも暗記ができていました

 

一方で、複数の科目を同時に勉強する必要がある状態ではなかなか時間がかかる方法であるため、部活も遊びも楽しみたい中学生には効率が悪いと感じていました。

もやもやしながら同様の方法で勉強を続けていたところ、中学校3年生のときに配布された漢字の教科書において感動の出会いがありました

それは、書いて覚えるタイプではなく、

見て覚える赤シート式の漢字の教科書でした。

 

※写真は高校時代にお世話になったシステム英単語(出版:駿台文庫)です。

 

それまでは書くことで覚えられると思っていましたが、全く漢字を書かなくても覚えられることを体感して非常に驚きました。

 

高校生になって、さらに勉強の内容が高度化し難しくなったのと同時に、部活の時間も遅くなり思うように勉強時間が取れなくなりました。

そこで、バスでの移動時間での勉強が有効と考え、英単語帳を活用するようになりました。

かめは非常に欲張りで負けず嫌いなので、人目を避けるように、

バスの中で握力トレーニングをしながら単語帳をしていたのがとても懐かしいです(笑)

 

※写真はシステム英単語をやりながら、握力トレーニング(回して鍛えるやつ)をしているイメージになります。バスの中では回して鍛えるやつは、うるさくて使えませんので当時は握って鍛えるやつをリュックに忍ばせていました(笑)

 

加えて、かめの家は非常に節約症でしたので、父親が会社から持って帰ってくるA4コピー用紙の裏紙にたまに混ざっている、何も印刷されていないA4コピー用紙をカットして単語帳を作っていました(笑)

 

市販で売られている単語帳カードはお小遣いがなくて買えなかったためコピー用紙で作っていましたが、

厚みが薄くてたくさん重ねてもかさばりにくい点が良かったため、かめが大学生になってアルバイトを始めるまでは愛用していました。

 

というのは、市販の赤シート式の英単語帳は数多くのラインナップがありますが、

自分が覚えたいと思う単語のみを選択したり、覚えてしまった単語を除外したりする上で、

単語のページが決まっている本のタイプの単語帳は使いずらいと感じていたためです。

 

本の覚えた部分を塗りつぶしたり、折り曲げたりするのに抵抗がありましたし、時間をおいてもう一周するときには忘れていることもあって、うまく単語帳を活用できていなかった記憶があります。

 

さらに、本の単語帳は前後の単語の配列が決まっているため、

順番や位置によって空間的に単語を覚えてしまっている恐れがあります。

 

学校のテストで点数を取る上では、教科書のイラストや前後の学習の流れに従って短時間で覚えられるため有効な手段です。

一方で、全く異なる場面で出てきた場合には思い出しにくくなってしまうと思っています。

 

 

これまでの経験を基に、単語帳好きのかめが考える理想の単語帳のポイントを以下にまとめます。

 

  1. 自分がその時に勉強したい単語を選ぶことができる。
  2. 単語帳を自分で作ったり増やしたりすることが簡単にできる。
  3. 覚えた単語の除外や忘れた頃の復習が簡単にできる。
  4. 出題される順番やページが視覚的・空間的に連続ではない。
  5. かさばらず持ち運びが便利である。
  6. 費用をかけずに実現できる。

 

もはや、紙媒体での単語帳では限界がありますので、

エクセルマクロを利用した登録式デジタル単語帳【かめの甲羅3号】

を今回作成しました!!

 

デジタル単語帳のダウンロード

かめが生きている間は当ライブラリーにエクセルファイルを公開し続けますので、

利用者様の責任の範囲でのダウンロードおよびご利用が可能です。

 

↓↓↓クリックで.Zip圧縮ファイルがダウンロード可能です。

デジタル単語帳【かめの甲羅3号】Rev.1_20200531.zip

 

現在の最新版:Rev.1_2020年5月31日

 

当単語帳はMicrosoft さんのOfficeのサイトで無料でダウンロード可能な単語帳を、

かめなりに機能を追加して編集したものとなります。

 

Microsoftさんダウンロードサイトはこちらhttps://www.microsoft.com/ja-jp/office/pipc/newlife/students.aspx

 

<かめが追加した機能一覧>

・カード表裏分離

・例文・発音・引用・場面・周回番号欄追加

・意味-スペル出題形式変更機能

・キーワードフィルタ機能

・✔マーク追加-消去機能

・★マーク読み飛ばし機能

 

 

※かめはエクセルマクロ初心者ですので、マクロの文章が最適化されていない点はご容赦ください(笑)

※今後、バグの修正や機能の追加があれば、Rev.を改定してエクセルデータをアップロードする予定です。

※登録した単語のリストは対象のセルの一括コピーアンドペーストで移動可能ですので、改訂版への移行も簡単です。

 

使い方の概要

使い方の詳細はエクセルファイル中に記載しておりますので、ここでは簡単な説明に留めます。

 

1.エクセルファイルをダウンロードする。(当記事にて公開中↑↑↑)

 

2.ファイルを開いてマクロを有効にする。

→エクセルマクロは事前に設定したデータ処理を自動的に行うため、危険に対する注意を促す確認のステップが盛り込まれています。利用者が問題ないと判断した上で、許可をしてマクロを実行する必要があります。

→ファイルを開いたときに黄色で上部に表示される「編集を有効にする」および「コンテンツの有効化」をそれぞれクリックすることで、単語帳の機能を利用することができるようになります。

 

※セキュリティー管理については、利用者様にてご判断いただければ幸いです。

※MicrosoftさんのOfficeの専用サイトにてダウンロードできる単語帳においても、同様の操作が必要ですので、かめの甲羅3号のご利用が不安でございましたら、Officeの専用サイトにてダウンロードできる単語帳のマクロを編集いただくのが安全とかめは考えます。

 

3.「データシート」シート内のリストでお好みの単語を登録する。

→「単語・熟語」の列に上から詰めて単語を登録すれば、「単語帳」シートで入力した内容が表示されるようになります。

→インターネット上には多くの単語・熟語検索ツールがありますので、発音記号も含めて簡単にデータのコピーが可能です。

 

→単語と意味の欄に入力があれば、単語帳として利用可能ですので、

発音や例文などの用意された欄を無理に全て入力せずに活用いただいた方が勉強時間短縮に効果的です!

 

 

4.「単語帳」シートで出題される形式やキーワードを選択する。

→「出題形式」欄:単語の意味を出題するか、スペルを出題するか選べます。

→「ランダム」欄:登録した単語をランダムに出題するか選べます。

→「フィルタ」欄:キーワードを入力すると、そのキーワードを含む単語のみ出題されます。

 

5.単語帳による学習を開始する。

→開始前に「RESET」ボタンクリック。「FLIP」ボタンクリックで出題と正解の表示が繰り返されます。

 

6.✔マークと★マークを活用する。

→「CHECK」ボタンクリックで✔マークをマーキングできます。(消去は「CLEAR」か「CLEAR ALL CLEAR」ボタンをクリック。)

【重要】✔マークを「フィルタ」欄に入力して「FLIP」ボタンクリックすると✔マークを入れた単語しか出題されなくなるので非常に便利です!

→「データシート」シート内で★マークを記入した単語は「単語帳」シートで出題されなくなります。

 

※エクセル内の行や列を勝手に増やしてしまうと、各ボタンに割り振られたマクロが正常に動作しなくなり、使えなくなりますのでご注意ください。

※無限ループに入ってしまった場合は、タスクマネージャーにてエクセルを強制終了することをお勧めします。

※単語登録後に強制終了する事態になった場合は、再登録することになり絶望するため、こまめな保存をお勧めします。

※動作がおかしくなってしまって復旧できないときは、ダウンロードしたエクセルに【データシート】に登録した単語をコピーアンドペーストすればそのまま使えます。

 

 

感想

Microsoft Office エクセルのマクロ機能を利用することで、

理想の単語帳のポイントはほとんどカバーすることができました。

 

エクセルマクロを少し理解すれば、機能の追加も簡単にできますので自分好みの単語帳にカスタマイズ可能です♪

エクセルマクロは、大学の研究室や仕事場でもよく活用されていますので、

学生の教育課程の早い段階でMicrosoft Officeを活用するのが良いとかめは考えています。

 

また、これまで本の単語帳で暗記しきれていなかった単語をピックアップしてリスト化できますので、今後は単語帳を本棚に並べる必要もなさそうですね♪

 

 

一方で、単語帳において最も重要な【携帯性】が失われていますので、

将来的にエクセルマクロがスマートフォンやタブレットで気軽に利用できるようになることをかめは期待しています。

※スマートフォンなどでエクセルは見れますが、マクロファイルは高性能な端末でなければ現状では開けない認識です。

 

今後もオリジナル単語帳を活用して、

業務効率化・語学力向上に努めて参ります。

 

当サイトではこの他にも無料でご利用可能な教材をアップロードしておりますので、よろしければご活用ください。

【無料教材:一覧】~オンライン教材を活用して独学に励もう!~

 

感想Rev.1改訂履歴(2020年5月31日)
1.データシートの登録行の切り取り・挿入・削除を行ってもNo.がバグらないように改良

「No.」の列のセルに「=INDIRECT(ADDRESS(ROW()-1,COLUMN())) +1」の関数を入力することで、一つ上のセルのNo.に1を加えてた表示をするようにしました。

 

これで、完全に覚えた単語の行を消したり、類似する単語を並べ替えたりしてもNo.に関するバグは起こりにくくなります。

ついでに、No.も9999まで増やしておきました(笑)

 

2.「フィルタ候補登録欄」の追加

FLASH CARDシートのフィルタ機能は、大文字・小文字も正確に入力しないと機能しません。

よく利用するキーワードは「フィルタ候補登録欄」に8個まで登録して、ドロップダウンリストから選択できるようにしました♪

 

例えば、イラストにあるように【 ✔ ・ 動 ・ 名 ・ TOEIC 】の4つをフィルタ候補登録欄に登録しておけば、TOEICに関連する動詞の単語で要チェックの単語を集中的に勉強した後に、名詞の勉強に切り替えるのが簡単になります。

 

※注意:このフィルタ機能は、入力項目を増やすほど絞り込みが厳しくなる【AND方式】ため、2つ以上のフィルタ条件を同時に満たす単語がない場合は無限ループのバグとなります。

 

これに伴い、入力の自由度を高めるために、データシートの「引用文字候補」欄は廃止しました。

 

3.覚えた単語を除外する「ELIMINATE」ボタンを追加

覚えた単語はデータシートに★マークを付けることで出題されなくなりますが、FLASH CARDシートの方でも除外ができるようにボタンを追加しました。

 

ボタンを押すことで現在表示されている単語に★マークが付けられ、全体の★マークの数のカウンターも✓マーク同様に用意しました。

また、全ての✓を外す「CLEAR ALL ✓」に加えて、「CLEAR ALL ★」ボタンも追加し、欄外に移動しています。

 

単語帳をやっていると眠くなってきて、うっかり思っていたのと違うボタンを押すことがよくあったので、しましまの注意表示にデザイン変更しています(笑)

 

 

エクセルマクロ公開(2021年1月17日)

当サイトのダウンロードファイルのご利用が心配な方のために、Rev.1の時点でのエクセルマクロも公開しておきます。

※もっと早く気付けばよかったですね(笑)

 

これで、Microsoftさんダウンロードサイトでエクセルをダウンロードして改造することで、誰でも安全にかめのデジタル単語帳が再現できるわけです♪

 

ただし、エクセルシートの列・行、ボタン・ドロップダウンリストなどはMicrosoftさんのものから増やしたりしていますので、手直しが必要ではあります(笑)

 

~~~以下エクセルマクロの文章をそのままコピーして貼り付けたものを背景黒色で掲載します~~~

※表示されていませんが、「RNDN」と「RNDNP」もあります。

 

1.ThisWorkbook内

Option Explicit

Private Sub Workbook_BeforeClose(Cancel As Boolean)
''※終了時に自動実行

Worksheets("単語帳").Range("E6:L27").Value = ""

End Sub


Private Sub Workbook_Open()
''※起動時に自動実行

cnt = Worksheets("データシート").Range("C5").End(xlDown).Offset(0, -1)

ReDim KazuC(1 To cnt + 1)

Q = True
QNo = 1
FromNext = True
i = 0
k = 1

Worksheets("単語帳").Range("O9").Value = ""
Worksheets("単語帳").Range("J3:N3").Value = ""
Worksheets("単語帳").Range("N10").Value = ""

End Sub

 

2.Module1内

Option Explicit
Public QNo As Integer
Public cnt As Integer
Public cntt As Integer
Public PPP As Integer
Public KazuC() As Boolean
Public Q As Boolean
Public FromNext As Boolean
Public i As Integer
Public k As Integer
Public m As Integer
Dim Sentence As String
Dim SentenceA As String
Dim SentenceB As String
Dim SentenceC As String
Dim SentenceP As String
Dim Sentence1 As String
Dim Sentence2 As String
Dim Sentence3 As String
Dim Sentence4 As String
Dim Sentence5 As String

Sub Card_Clear()
'画面表示と変数の初期化、「RESET」ボタンに割り当て


'問題数を数える xlDownは一番下に移動、Offsetは移動先から移動
cnt = Worksheets("データシート").Range("C5").End(xlDown).Offset(0, -1)
cntt = cnt + 1

'周回数を記録する
If QNo > cnt Then
k = k + 1
Else
If Range("F3").Value = "なし" Then
k = 1
Range("N10").Value = ""
Else
If m >= cnt Then
k = k + 1
Else
k = 1
Range("N10").Value = ""
End If
End If
End If

'配列の数をデータシートにする
ReDim KazuC(1 To cntt)

i = 1

'KazuCは問題表示履歴。全てFalseで未表示にする。
Do While i <= cntt
KazuC(i) = False
i = i + 1
Loop

'フィルタでスキップする問題を表示済みにする
Call Filter

i = 1
Do While KazuC(i) = True
i = i + 1
Loop
QNo = i

Worksheets("単語帳").Range("E6:L27").Value = ""
Worksheets("単語帳").Range("O9").Value = ""
i = 0
Q = True

End Sub

Sub Filter()

'フィルタでスキップする問題を表示済みにする
i = 1
m = 0
Do While i <= cnt

SentenceA = Range("J3").Value
SentenceB = Range("L3").Value
SentenceC = Range("N3").Value

SentenceP = Worksheets("データシート").Range("C5").Offset(i - 1, 0) & Worksheets("データシート").Range("D5").Offset(i - 1, 0) & Worksheets("データシート").Range("E5").Offset(i - 1, 0) & Worksheets("データシート").Range("F5").Offset(i - 1, 0) & Worksheets("データシート").Range("G5").Offset(i - 1, 0) & Worksheets("データシート").Range("H5").Offset(i - 1, 0) & Worksheets("データシート").Range("I5").Offset(i - 1, 0) & Worksheets("データシート").Range("J5").Offset(i - 1, 0) & Worksheets("データシート").Range("K5").Offset(i - 1, 0)
If SentenceP Like "*" & SentenceA & "*" Then
Else
If Range("J3").Value = "" Then
Else
KazuC(i) = True
End If
End If

If SentenceP Like "*" & SentenceB & "*" Then
Else
If Range("L3").Value = "" Then
Else
KazuC(i) = True
End If
End If

If SentenceP Like "*" & SentenceC & "*" Then
Else
If Range("N3").Value = "" Then
Else
KazuC(i) = True
End If
End If

If SentenceP Like "*★*" Then
KazuC(i) = True
End If

'ランダム用に表示済みの数をカウントする。
If KazuC(i) = True Then
m = m + 1
End If

i = i + 1
Loop

End Sub

Sub ACheck_Clear()
'チェックマークを全て消す、「CLEAR ALL CHECK」ボタンに割り当て


Worksheets("データシート").Range("I5:J10003").Value = ""


End Sub

Sub AEliminate_Clear()
'★マークを全て消す、「CLEAR ALL ★」ボタンに割り当て


Worksheets("データシート").Range("K5:K10003").Value = ""


End Sub

Sub PartClear()
'「CLEAR」ボタンでチェックを消す

If Range("D3").Value = "意味" Then

PPP = Range("O9").Value
Worksheets("データシート").Range("I5").Offset(PPP - 1, 0).Value = ""

Else
PPP = Range("O9").Value
Worksheets("データシート").Range("J5").Offset(PPP - 1, 0).Value = ""

End If

End Sub

Sub PartEliminate()
'「Eliminate」ボタンで★マークをつける

PPP = Range("O9").Value
Worksheets("データシート").Range("K5").Offset(PPP - 1, 0).Value = Worksheets("データシート").Range("K3").Value

End Sub

Sub PartCheck()
'「CHECK」ボタンでチェックする

If Range("D3").Value = "意味" Then

PPP = Range("O9").Value
Worksheets("データシート").Range("I5").Offset(PPP - 1, 0).Value = Worksheets("データシート").Range("I3").Value

Else
PPP = Range("O9").Value
Worksheets("データシート").Range("J5").Offset(PPP - 1, 0).Value = Worksheets("データシート").Range("I3").Value

End If

End Sub

Sub In_orderN()
'出題形式「意味」、ランダム「なし」で「FLIP」ボタンを押したときに呼び出されるループ

'フィルタでスキップする問題を表示済みにする
Call Filter

'問題が表示済みあるいはフィルタで除去済みであればスキップする
If Q = True Then

Do While KazuC(QNo) = True
QNo = QNo + 1
Loop
End If

'最後まで行ったらKazuCをリセットする。
If QNo > cnt Then
Call Card_Clear
End If



'問題番号の表示
Range("O9").Value = Format(QNo, "000")

'Q=Trueの時には問題を、Falseの時には解答を表示する
If Q = True Then

'新しい問題を表示する
Sentence = Worksheets("データシート").Range("C5").Offset(QNo - 1, 0).Value
Sentence1 = Worksheets("データシート").Range("D5").Offset(QNo - 1, 0).Value
Sentence5 = Worksheets("データシート").Range("H5").Offset(QNo - 1, 0).Value

Range("E6").Value = Sentence
Range("E9").Value = "[" & Sentence1 & "]"
Range("E12").Value = Sentence5

'問題番号を表示済みにする

KazuC(QNo) = True

'前の解答を消す
Range("E18:L27").Value = ""

'次に解答を表示するためにQ変数をFalseにセットする
Q = False

Else
'Falseの場合は回答を表示させる。
Sentence2 = Worksheets("データシート").Range("E5").Offset(QNo - 1, 0).Value
Sentence3 = Worksheets("データシート").Range("F5").Offset(QNo - 1, 0).Value
Sentence4 = Worksheets("データシート").Range("G5").Offset(QNo - 1, 0).Value
Range("E18").Value = Sentence2
Range("E22").Value = Sentence3
Range("E25").Value = Sentence4

'問題を次に進める

Q = True
QNo = QNo + 1


End If

End Sub


Sub In_orderB()
'出題形式「スペル」、ランダム「なし」で「FLIP」ボタンを押したときに呼び出されるループ

'フィルタでスキップする問題を表示済みにする
Call Filter

'問題が表示済みあるいはフィルタで除去済みであればスキップする
If Q = True Then

Do While KazuC(QNo) = True
QNo = QNo + 1
Loop
End If

'最後まで行ったらKazuCをリセットする。
If QNo > cnt Then
Call Card_Clear
End If



'問題番号の表示
Range("O9").Value = Format(QNo, "000")

'Q=Trueの時には問題を、Falseの時には解答を表示する
If Q = True Then

'新しい問題を表示する

Sentence2 = Worksheets("データシート").Range("E5").Offset(QNo - 1, 0).Value
Sentence3 = Worksheets("データシート").Range("F5").Offset(QNo - 1, 0).Value
Sentence4 = Worksheets("データシート").Range("G5").Offset(QNo - 1, 0).Value
Range("E18").Value = Sentence2
Range("E22").Value = Sentence3
Range("E25").Value = Sentence4

'問題番号を表示済みにする

KazuC(QNo) = True

'前の解答を消す
Range("E6:L15").Value = ""

'次に解答を表示するためにQ変数をFalseにセットする
Q = False

Else
'Falseの場合は回答を表示させる。
Sentence = Worksheets("データシート").Range("C5").Offset(QNo - 1, 0).Value
Sentence1 = Worksheets("データシート").Range("D5").Offset(QNo - 1, 0).Value
Sentence5 = Worksheets("データシート").Range("H5").Offset(QNo - 1, 0).Value

Range("E6").Value = Sentence
Range("E9").Value = "[" & Sentence1 & "]"
Range("E12").Value = Sentence5

'問題を次に進める

Q = True
QNo = QNo + 1


End If

End Sub

Sub RNDN()
'出題形式「意味」、ランダム「あり」で「FLIP」ボタンを押したときに呼び出されるループ

Randomize

'フィルタでスキップする問題を表示済みにする
Call Filter

'全て表示済みになったらKazuCをリセットする。
If m >= cnt Then
Call Card_Clear
End If


'問題が未表示になるまでランダムスキップする
If Q = True Then


Do
QNo = Int(cnt * Rnd + 1)
Loop Until KazuC(QNo) = False

End If



'問題番号の表示
Range("O9").Value = Format(QNo, "000")

'Q=Trueの時には問題を、Falseの時には解答を表示する
If Q = True Then

'新しい問題を表示する
Sentence = Worksheets("データシート").Range("C5").Offset(QNo - 1, 0).Value
Sentence1 = Worksheets("データシート").Range("D5").Offset(QNo - 1, 0).Value
Sentence5 = Worksheets("データシート").Range("H5").Offset(QNo - 1, 0).Value

Range("E6").Value = Sentence
Range("E9").Value = "[" & Sentence1 & "]"
Range("E12").Value = Sentence5


'前の解答を消す
Range("E18:L27").Value = ""

'次に解答を表示するためにQ変数をFalseにセットする
Q = False

Else
'Falseの場合は回答を表示させる。
Sentence2 = Worksheets("データシート").Range("E5").Offset(QNo - 1, 0).Value
Sentence3 = Worksheets("データシート").Range("F5").Offset(QNo - 1, 0).Value
Sentence4 = Worksheets("データシート").Range("G5").Offset(QNo - 1, 0).Value
Range("E18").Value = Sentence2
Range("E22").Value = Sentence3
Range("E25").Value = Sentence4

'問題番号を表示済みにする

KazuC(QNo) = True

Q = True

End If

End Sub

Sub RNDB()
'出題形式「スペル」、ランダム「あり」で「FLIP」ボタンを押したときに呼び出されるループ

Randomize

'フィルタでスキップする問題を表示済みにする
Call Filter

'全て表示済みになったらKazuCをリセットする。
If m >= cnt Then
Call Card_Clear
End If

'問題が未表示になるまでランダムスキップする
If Q = True Then


Do
QNo = Int(cnt * Rnd + 1)
Loop Until KazuC(QNo) = False

End If

'問題番号の表示
Range("O9").Value = Format(QNo, "000")

'Q=Trueの時には問題を、Falseの時には解答を表示する
If Q = True Then

'新しい問題を表示する

Sentence2 = Worksheets("データシート").Range("E5").Offset(QNo - 1, 0).Value
Sentence3 = Worksheets("データシート").Range("F5").Offset(QNo - 1, 0).Value
Sentence4 = Worksheets("データシート").Range("G5").Offset(QNo - 1, 0).Value
Range("E18").Value = Sentence2
Range("E22").Value = Sentence3
Range("E25").Value = Sentence4


'前の解答を消す
Range("E6:L15").Value = ""

'次に解答を表示するためにQ変数をFalseにセットする
Q = False

Else
'Falseの場合は回答を表示させる。
Sentence = Worksheets("データシート").Range("C5").Offset(QNo - 1, 0).Value
Sentence1 = Worksheets("データシート").Range("D5").Offset(QNo - 1, 0).Value
Sentence5 = Worksheets("データシート").Range("H5").Offset(QNo - 1, 0).Value

Range("E6").Value = Sentence
Range("E9").Value = "[" & Sentence1 & "]"
Range("E12").Value = Sentence5

'問題番号を表示済みにする

KazuC(QNo) = True

Q = True


End If

End Sub




Sub RNDNP()
'出題傾向「意味」、ランダム「あり」で「FLIP」ボタンを押したときに呼び出されるループ

Randomize

'問題数を数える
cnt = Worksheets("データシート").Range("C5").End(xlDown).Offset(0, -1)


'問題と解答をセットする
If Q = True Then

QNo = 1
i = 0
'問題が表示済みかは「KazuC(QNo)」の真偽でチェックしている
Do While QNo <= cnt
If KazuC(QNo) = True Then
i = i + 1
End If
QNo = QNo + 1
Loop

'すべての問題を表示済みの場合には、表示済みチェックを初期化(KazuCのリセット機能)
If i = cnt Then
QNo = 1
Do While QNo <= cnt
KazuC(QNo) = False
QNo = QNo + 1
Loop
End If
'既出問題かどうかをチェックして新しい問題番号を表示済みにする
Do
QNo = Int(cnt * Rnd + 1)
Loop Until KazuC(QNo) = False

KazuC(QNo) = True

'問題番号に従って変数に問題文または解答をセット
Sentence = Worksheets("データシート").Range("C5").Offset(QNo - 1, 0).Value
Sentence1 = Worksheets("データシート").Range("D5").Offset(QNo - 1, 0).Value
Sentence5 = Worksheets("データシート").Range("H5").Offset(QNo - 1, 0).Value

Range("E6").Value = Sentence
Range("E9").Value = "[" & Sentence1 & "]"
Range("E12").Value = Sentence5
Range("E18:L27").Value = ""

Q = False
Else
Sentence2 = Worksheets("データシート").Range("E5").Offset(QNo - 1, 0).Value
Sentence3 = Worksheets("データシート").Range("F5").Offset(QNo - 1, 0).Value
Sentence4 = Worksheets("データシート").Range("G5").Offset(QNo - 1, 0).Value

'新しい内容を表示する
Range("E18").Value = Sentence2
Range("E22").Value = Sentence3
Range("E25").Value = Sentence4

Q = True
End If

'問題番号をセット
Range("O9").Value = Format(QNo, "000")

'問題と解答を表示

End Sub


Sub RNDBB()
'ランダム「あり」で「FLIP」ボタンを押したときに呼び出されるループ

Randomize

'問題数を数える
cnt = Worksheets("データシート").Range("C5").End(xlDown).Offset(0, -1)


'問題と解答をセットする
If Q = True Then

QNo = 1
i = 0
'問題が表示済みかは「KazuC(QNo)」の真偽でチェックしている
Do While QNo <= cnt
If KazuC(QNo) = True Then
i = i + 1
End If
QNo = QNo + 1
Loop

'すべての問題を表示済みの場合には、表示済みチェックを初期化(KazuCのリセット機能)
If i = cnt Then
QNo = 1
Do While QNo <= cnt
KazuC(QNo) = False
QNo = QNo + 1
Loop
End If
'既出問題かどうかをチェックして新しい問題番号を表示済みにする
Do
QNo = Int(cnt * Rnd + 1)
Loop Until KazuC(QNo) = False

KazuC(QNo) = True

'問題番号に従って変数に問題文または解答をセット
Sentence = Worksheets("データシート").Range("C5").Offset(QNo - 1, 0).Value
Sentence1 = Worksheets("データシート").Range("D5").Offset(QNo - 1, 0).Value
Sentence5 = Worksheets("データシート").Range("H5").Offset(QNo - 1, 0).Value

Range("E6").Value = Sentence
Range("E9").Value = "[" & Sentence1 & "]"
Range("E12").Value = Sentence5
Range("E18:L27").Value = ""

Q = False
Else
Sentence2 = Worksheets("データシート").Range("E5").Offset(QNo - 1, 0).Value
Sentence3 = Worksheets("データシート").Range("F5").Offset(QNo - 1, 0).Value
Sentence4 = Worksheets("データシート").Range("G5").Offset(QNo - 1, 0).Value

'新しい内容を表示する
Range("E18").Value = Sentence2
Range("E22").Value = Sentence3
Range("E25").Value = Sentence4

Q = True
End If

'問題番号をセット
Range("O9").Value = Format(QNo, "000")

'問題と解答を表示

End Sub


Sub HyblidN()

'「FLIP」ボタンで実行する

If Range("D3").Value = "意味" Then

If Range("F3").Value = "なし" Then

Call In_orderN

Else
Call RNDN

End If

Else

If Range("F3").Value = "なし" Then

Call In_orderB

Else
Call RNDB

End If


End If

'周回数を表示する
Range("N10").Value = k


End Sub

 

~~~これでマクロ文章は終わりです~~~