マクロ作成の流れを文章で表現ー親指シフトトレーニングソフトをExcelマクロで作りましたー

  • URLをコピーしました!

親指シフトをマスターするために、Excelでマクロを利用して練習ソフトを作ってみました。
これを題材にして、マクロをどうやって作るかを解説します。
スクリーンショット 2012 02 15 7 01 03

トレーニングソフトの内容

親指シフトでは、まだまだまともに文字を打てません。
なんせ使い始めて3日ですので・・・・・・。
今はこのソフトとTwitter、FB投稿の際に練習しています。

このソフトでは、自分が作ったリストから問題文をランダムで表示させ、自分が入力した解答をチェックできます。
さらに、間違えた文字を集計できるようにしました。
こういうこともExcelマクロでできるのです。
おとといの夜、テストを含めて20分弱で作りました。

好きなキーワードを入力して練習した方が、マスターするスピードが速いと思ったのです。

おかげでちょっとずつ進歩しています(^_^;)

 

例えば、サッカーのクラブチーム名をリストにします。
スクリーンショット 2012 02 15 7 04 37

 

最初の問題がリストからランダムに表示されるので、それを親指シフトで入力していきます。
間違えてもそのまま入力します。
間違いを認識するのが、こういったトレーニングや勉強法の秘訣だからです。(私の経験上)

問題「ばるせろな」が表示されたら、その文字を入力していきます。

入力の際は、キーの一覧表を見ずに可能限りスピードを上げるようにしています。

WS000000

 

入力が終わりEnterを押すと、間違えた文字が表示されます。
例では、「る」を「ま」と間違えました。
この場合、間違えた文字「る」が記録されますので、この「る」を重点的に練習するのです。
今後のバージョンアップでは、どう間違えたかも記録できるようにします。

WS000001

 

これを10〜15回くらい繰り返します。

間違えた文字は累計でカウントされ、グラフ表示(条件付き書式)されます。

リストは複数のものを準備しています。
モビルスーツ名・パイロット名っていうのもあります(^_^)
友人、動物、税務用語、会計用語のリストも作ってみようかと思っています。

遅くて恥ずかしいのですが、今の状態をさらけだします。
まだまだこんなスピードでしか打てませんし、ミスタイプも多いです。
マスターすると、ホントに速くなるのでしょうか(笑)

※音は出ません

マクロを作るときの基本的な考え方

マクロを作るときには、次のようなことを考えています。
・少しずつ作る
・テストしながら作る
・例外をなくす

最初から今回のようなマクロを一気に作るのは無理です。
文字を比較するマクロを書き、それが上手く動いたら、問題をランダムに表示させる部分を作り、それができたら、集計ができるようにする・・・・・・といった風に少しずつテストしながら作っていきます。

その後、例外(バグ)をつぶしています。
どういう例外が起きるかをひたすらテストするわけです。
自分が使うか人に提供するかでこのときにつぶす例外の度合が異なります。

 

 

マクロ作成の流れ

今回はこうやって作りました。
マクロを触ったことのない方もマクロを作る際のイメージを思い浮かべていただければと思います。

1 問題と解答の比較

問題として表示されるキーワードを解答として入力したキーワードを比較するマクロを作ります。

「ばるせろな」と「ばませろな」と入力してみて、比較します。

まず、「ば」と「ば」を比較して、違っていれば、問題文側の文字を表示させます。

マクロとしては、

”問題の1文字目と解答の1文字目を比較して異なっていれば、問題の1文字目を表示して”

と書くわけです。

 

2 1を繰り返す

上記1では5文字あるわけですので、同じことを5回繰り返すわけです。
この同じことを繰り返すのをマクロは得意としています。
正確に、疲れることなく、めんどくさがらず、文句を言わず繰り返してくれます。

マクロとしては、

”問題の1文字目と解答の1文字目を比較して異なっていれば、問題の1文字目を表示して”
”1文字目、2文字目、3文字目、4文字目、5文字目と5回繰り返して”
と書きます。

これでテストします。

 

3 繰り返す回数を指定する

上記2では、5回でしたが、問題文が「れあるまどりー」となると、7回繰り返す必要があります。
問題文ごとに何回繰り返すかを指定する必要があるのです。
これをいちいちマクロに入力していては意味がありません。かえって大変でしょう。

そこで、繰り返す回数もExcelに判断してもらいます。

繰り返す回数=問題の文字数であることに注目し、

”問題の文字数をカウントして、その数だけ繰り返して”

と書くのです。

これで1文字でも100文字でも1,000,000文字でもマクロは確実に動いてくれます。
数が増えても同じことをやってくれるのがマクロの魅力です。

結果として

”問題の文字数をカウントし、その文字数と同じ回数だけ次の処理を繰り返して”

”問題と解答を1文字ずつ比較し、異なっていれば、その文字を表示して”

となります。

4 解答を入力したらすぐにチェックしてもらうようにする

上記3までのマクロを作ると、次のような状態になります。

問題を見て解答を入力

マクロを実行させる(ボタンやショートカットキー、プログラムの実行など)

解答をチェック

これだとマクロを実行する作業は人間がやらなくてはいけません。
上記3までのマクロがうまく作動したら、次は、マクロの実行も自動的にできるようにします。

”解答を入力したら”

というマクロを書くのです。

この後に、これまで作ったマクロをくっつけて

”解答を入力したら”

”問題の文字数をカウントし、その文字数と同じ回数だけ次の処理を繰り返して”

”問題と解答を1文字ずつ比較し、異なっていれば、その文字を表示して”

とします。

 

5 数字をランダムに表示させる

次に、問題をランダムに表示するマクロを書きます。

今回の場合、まず

”ランダムに数字を発生させて、それを表示して”

というマクロを書きます。

 

6 ランダムに発生させた数字にしたがって問題を表示

次に

”ランダムに発生させた数字にしたがってリストからキーワードを拾ってきて”

というマクロを書きます。

 ストレートにキーワードをランダムに拾ってくるように書くこともできるのですが、うまくいかなかったので、とりあえずこうしました。

 

7 問題の表示を自動化

解答を入力したあとすぐに上記5のマクロを表示させるようにします。

解答したら、次の問題が表示されます。

 

これまでのマクロをくっつけると

”解答を入力したら”

”問題の文字数をカウントし、その文字数と同じ回数だけ次の処理を繰り返して”

”問題と解答を1文字ずつ比較し、異なっていれば、その文字を表示して”

”ランダムに発生させた数字にしたがってリストからキーワードを拾ってきて”

となります。

 

8 間違えた文字の集計

間違えた文字を集計する方法は、Excelの機能と組み合わせています。
COUTIF関数でカウントするようにあらかじめ設定し、

”間違いの数を多い順に並べ替えて。”

というマクロを書き、これまでのマクロにくっつけます。

 

”解答を入力したら”

”問題の文字数をカウントし、その文字数と同じ回数だけ次の処理を繰り返して”

”問題と解答を1文字ずつ比較し、異なっていれば、その文字を表示して”

”ランダムに発生させた数字にしたがってリストからキーワードを拾ってきて”

”間違いの数を多い順に並べ替えて。”

となります。
実際は、これに問題文の数(現在は「15」)の設定を加えています。

 

9 使いやすくする工夫

最後に使いやすくする工夫を加えます。
今のところ、1セット10個の問題を解くようにしています。
次のセットを行うには、いったんリセットしなければいけません。
このときに、いちいち問題文や間違えた文字を消していては大変です。

そこで、

”問題文、間違えた文字をいったん消して”

というマクロを書きます。

これは別個にボタンで設定しています。新しいセットをスタートするときはそのボタンを押します。
ただ、このままだと同じ問題が表示されるので、

”ランダムに数字を発生させて、それを表示して”
も追加して、

”問題文、間違えた文字をいったん消して。さらにランダムに数字を発生させて、それを表示して”

というマクロにします。

これで完成です。

こんな風に少しずつ作り、テストしながら、改善していきます。
仕事術に通じることだと思います(^_^)

マクロは一気にすらすら書くイメージがありますが(もちろんそういう方もいるでしょう)、基礎的なスキルを身につければ、あとはテストしながらちょっとずつ作るものなのです。

あとはアイデア勝負ですね。

その基礎的な部分をセミナーでお伝えしています。

 

【セミナー情報】
残席わずか。本日(2/15)23:59締切です。

2/19 ピボットテーブル入門セミナー 残席2名
2/19(日)経理&会計のためのExcelマクロセミナー 入門コース 残席1名

【マクロに関する参考記事】

 

 





【編集後記】
昨日、整体に行くと、予想以上に重傷とのこと。
腰回りやふとももが、やはりかちんこちんのようです。
東京マラソンまでにあと2回予約しました(^_^;)

 

 

  • URLをコピーしました!