しずくぶろぐ

競技ぷろぐらみんぐしたり、なんかしたりします

単語帳を作った。

中二くらいから知らなかった英単語を小さいノートに書き溜めておいてたまに見返す、ということを繰り返して 単語を覚えようとしていました。 しかし、ノートに書くとどこに何を書いたか分からず、 うっかり同じ単語を入れてしまうことがありました。

中学生高校生のころは辞書に載っていない単語を調べることはほとんどなかったので、 辞書に調べたよマークをつけておけば、過去に調べていたのを忘れていたのに気づくことができていたのですが、 大学に入って専門の論文を読み始めると 辞書に載っていない単語もが多くなり同じ単語を何回も調べていることに気づきづらくなってきました。

そこで 知らなかった単語だけを辞書順で並べてくれる単語帳 があったらいいなぁと思い、探したのですが、あんまりいいのがなかった*1ので、 エクセルで作りました。

追加したい単語の綴りと意味を太字で囲ったところに入力して追加ボタンを押すとアルファベット順に並んでくれます(Fig.1,2)。

f:id:kapt0nH:20200719001557p:plain
Fig.1 知らなかった単語の綴りと意味を入力して追加ボタンをクリック
f:id:kapt0nH:20200719001744p:plain
Fig.2 アルファベット順に並べてくれる

綺麗に並んでくれると嬉しいですね。

問題はこのシートを開くのが面倒ということです。

作り方

Mac用のエクセル(バージョン16.39)を使っています

  1. エクセルを開きます。
  2. ツール>マクロ>Visual Basic Editor でなんかプログラマーっぽい画面にします.
  3. コードを書きます
Sub Narabikae()
     Range(" B7").CurrentRegion.Sort _
     key1:=Range("B7"), Order1:=xlAscending, _
     key2:=Range("C7"), Order2:=xlAscending, _
     Header:=xlYes
End Sub

 Sub Plus()
    Range("B1048576").End(xlUp).Offset(1).Select
    ActiveCell.FormulaR1C1 = Range("B4").Value
    Range("C1048576").End(xlUp).Offset(1).Select
    ActiveCell.FormulaR1C1 = Range("C4").Value
    Call Narabikae
     Range(" B4").ClearContents
     Range("C4").ClearContents
 End Sub
  1. エクセルシートに戻って、挿入で、ボタン用の四角形を作ります。
  2. 作った四角形をクリックして、「マクロの登録」でPlusを登録します
  3. できあがり

コードの説明

Narabikae(並び替え)
Sub Narabikae()
     Range(" B7").CurrentRegion.Sort _
     key1:=Range("B7"), Order1:=xlAscending, _
     key2:=Range("C7"), Order2:=xlAscending, _
     Header:=xlYes
End Sub

並び替えてくれるマクロです

セルB7を含むひとまとまりのグループを並び替えします

     Range(" B7").CurrentRegion.Sort _

比較するのはB7が含まれている列で、順番はAからZです。 一番最初の行は見出しなので並び替えません。

     key1:=Range("B7"), Order1:=xlAscending, _
     key2:=Range("C7"), Order2:=xlAscending, _
     Header:=xlYes
Plus(追加)
 Sub Plus()
    Range("B1048576").End(xlUp).Offset(1).Select
    ActiveCell.FormulaR1C1 = Range("B4").Value
    Range("C1048576").End(xlUp).Offset(1).Select
    ActiveCell.FormulaR1C1 = Range("C4").Value
    Call Narabikae
     Range(" B4").ClearContents
     Range("C4").ClearContents
 End Sub

実際に追加します

B列のシートの一番下から何か入力されているところまで上がってきて一個下がったセルを選択します

    Range("B1048576").End(xlUp).Offset(1).Select

選択したセルにB4セルの値を入れます

    ActiveCell.FormulaR1C1 = Range("B4").Value

並び替えを呼び出します

   Call Narabikae

入力欄の内容を消します

     Range(" B4").ClearContents

*1:単語カードは嵩張って好かない