レッスン動画目次
レッスンを始める前に…
マクロのつくり方
「VBAの教室」では、VBAの基礎を解説しています。基礎が分からなければ、マクロは作ることも読むこともできません。まったくVBAが初めての人でも、数日あれば自分でマクロを作れるようになります。
しかし、実務の現場でマクロを作ろうとすると、これが一筋縄ではいきません。理由としては簡単です。実務はテキストのようにシンプルではないからです。そこで、多くの人が考えます。質問します。「これは、どうしたらいいですか?」「こういうマクロを作りたいのですが?」でもこういった質問のほとんどは「ベーシックで学んだコレとアレを組み合わせれば…」という内容が多いです。つまり、基礎は理解したものの、学習した内容をどう使ったらいいかとか、いつ使うのかが分かっていないのです。
学んだことを使うには、学んだことの「使い方」を知らなければなりません。
使うために学ぼう
そこで皆さんに言いたいことは、使うために学ぼうということです。そのためにマクロを作るときは、次の考え方をしなければなりません。
マクロソフトのテキストでは①抽象化 ②細分化 ③簡略化の 順番で解説しています。VBAは業務で使うことがほとんどです。何か業務で困りごとがあって、でも時間がない、繰り返し作業という場合にVBAが大活躍します。
VBAでExcelに何をさせたいのか考えます。これが一番難しいといっても過言ではないかもしれません。何をさせたいか常に考えていることが大事だと思います。毎日業務を行いながらVBAが使えそうな場所を考えるようにしてください。話をもとに戻します。抽象化、細分化、簡略化のお話しです。
- 抽象化:何をしたい?製品ごとにまとめたい→つまり、文字列を並べ替える こんな感じに考えていきます。
- 細分化:したいことを実現させるためには何をすればいいのか順番に考えます。VBAの場合こんな感じが多いです。
ブックを開く
売上データを特定する
特定したデータをコピーする
保存するファイルの名前を作る
ブックを保存して閉じる
- 簡略化:細分化したことを一つ一つコードに起こしていく
もう一度細かく見ていきます。まず抽象化ですが、
抽象化には2つあります。ひとつは動作の抽象化。「部門別売上を支店コードごとに集計して~」と考えているとマクロは作れません。「A列の数値を、B列の文字列ごとに~」のようにイメージするのがポイントです。もうひとつはデータの抽象化です。集計する支店コードが仮に「ABC-123」のような形式であるなら、こうしたコードを漠然と考えていてはいけません。このコードは、どういうことなのかと抽象的に考えなければなりません。
細分化とは、作りたいマクロを、最小限の動作に分割して考えることです。たとえば「複数のブックから売上データを集約するマクロ」を作りたい、と考えても、そんな望みにバッチリかなうようなマクロはありません。自分で作るんです。そのとき「複数のブックから売上データを集約するマクロ」のようにマクロの全体像だけを考えていると、まず何をしていいかが分かりません。そんなときは、全体像を細分化して考えます。
必要なことは
- ブックを開く
- 売上データを特定する
- 特定したデータをコピーする
- 保存するファイルの名前を作る
- ブックを保存して閉じる
のように。
そして、これらの動作をひとつずつ作ります。これがポイントです。たとえば、まず「1. ブックを開く」だけ作ります。これができなかったら始まらないです。ブックを開くことができたら、売上データを特定する動作だけを作ります。特定すればいいのですから、Select できればいいです。この後、そこをコピーするのですが、まずは Select できればいいんです。こうして、動作ごとにマクロを作り、最後にそれらを合体します。マクロを作成できる上級者は、これを頭の中でやっているのです。そして、マクロを作れない人は、この発想ができません。
簡略化とは、扱いたいデータをシンプルに考える手法です。たとえば、100列×10000行ある表を操作しようとするとき、表全体を処理しようとすると難しくなります。こんなときは、3列×5行くらいのデータを処理できる動作を作ればいいんです。5行を処理できれば、同じコードで10000行も操作できます。 このセミナーでは、こうした「細分化」「抽象化」「簡略化」を考えながら作成していきましょう。
マクロ作成中にデバッグする
「細分化」「抽象化」「簡略化」が分かると、マクロを作れるようになります。とはいえ、作る途中では、いろいろなことが起こります。たとえばエラーになったり。
エラーは恥ずかしいことでも、忌み嫌うことでもありません。ただコードの間違いを、VBAが教えてくれているだけです。「ねぇ、ねぇ、ここ変だよ」って。だから、原因を調べて、修正すれば済む話です。しかし、多くの方はこれができません。この、間違っているところを調べて直す作業をデバッグと呼びます。
デバッグと聞くと、何か完成しているプログラムから不具合をあぶり出す作業のようにイメージしていることが多いのですが、そればかりではありません。デバッグはマクロ作成中にやるものです。だって、いきなり完璧なコードは書けないんだから。ということは、このデバッグができないと、マクロを作成できないということになります。その通りです。
でも、デバッグは難しいです。「デバッグができません」「デバッグを教えてください」という声をよく耳にします。もう一度言います。デバッグは難しいんです。なぜ難しいのでしょう。それは、デバッグという作業が”犯人捜し”だからです。適格に犯人を特定するには、3つの要素が必要です。
- デバッグの技術
- ExcelやVBAの知識
- 経験
そう、デバッグは”経験”がないとできない作業です。技術と知識を知っているだけでは難しいです。焦らずひとつひとつ調べながら進みましょう。デバッグの技術が身に付く過程が中級者と上級者の間になります。上級者を目指して頑張りましょう。