先日、エクセルVBAオンライン個人レッスンを行いました。
1回目はいつものクイズ式説明

今回、3回セットの講座を受講してくれたのはIさんという女性でした。
最初の1回目は、初心者に対していつも行っている説明をしました。クイズ式で基本コマンドの説明をしたあと、複数のエクセルファイルからデータを取り込んで1つの表に集めるという処理を行いました。
上手くできないのは想定内

2回目は、1回目の復習をサラッとやろうと思っていましたが、意外と時間がかかってしまいました。その後、文字列の編集処理の説明と演習をしました。本当は練習問題をもう少しやりたかったのですが、Iさんに対してやりたいことがあったので、短めにしておきました。そしてIさんが作りたいと言っている処理に直結することを少し説明して終わりました。
3回目の実施までに少し日がありました。Iさんは私が2回目の最後に残した課題をやってみて、うまくいかなかったのでメールで質問してきました。
上手くいかないのは私にとっては想定内です。1回や2回の講座を受けて、すぐにはできるようにならないのです。自分でやってみると初心者は必ずエラーになって進めなくなります。そこでその回避方法を教わって自分でやってみることで習得できるのです。
仕事で使う処理を作ろう

3回目の講座ではいよいよIさんが仕事で作りたいと思っている処理に取り掛かりました。
それほど難しいものではありません。あるセルにデータが入っていて、それを分解して多数のセルに書き出すだけです。データはこんな形でした。
「〇〇〇|△△|□□□||●●||▼▼▼」
| の区切り文字で分けられています。このデータを分解するために、InStrというコマンドを使うことにしました。InStrは指定した文字列の中にキーワードが何番目に入っているかを教えてくれるコマンドです。 | をキーワードにして、文字の何番目に入っていたかを判定して単語を分けることにしました。
最適なプログラムよりも、分かりやすいプログラム

もし私が会社でその処理を作るとしたら、元データをn個に分けるために、
For i=1 To n と書いてn回ループさせて単語に分解します。私でなくても、通常のプログラマならそうやって作るでしょう。
でも今回はそうしませんでした。
- まずは1つ目のデータを切り出す
- 次に2つ目のデータを切り出す
- 次に3つ目からn番目までをループさせて1つの処理で取り出す
としました。
1と2がなくても、最初っから全部ループさせろよ、と誰もが思うことでしょう。
プロがこんな処理を作っていたら笑われてしまいます。
でも、分けたのには理由があります。
初めてプログラミングに取り組んだIさんが、このプログラムコードを見直したとき、いきなりn回ループする処理になっていると、解読するのが難しいことでしょう。
今は理解できていても、少したったら分からなくなります。
それを、1つ目のデータはこうやって取り出して、2つめはこうやって、以下同文、としておくことで解読しやすくしたのです。
あべっかんの初心者向けプログラミング講座では、最適なプログラムを作ろうとはしていません。初心者が理解しやすいプログラムを作るように心がけています。
エクセルVBAプログラムのオンライン講座を行っています。このように、作りたい処理がある場合はそのやり方を教えます。

エクセルVBAオンライン個人レッスンはストアカのサイトで受け付けています。
初心者歓迎です。興味のあるかたは受けてみてくださいね。
コメント