はじめに
私が2,3年目のころにSEなのにExcel触っている時間の方が長いことと、Excelでの繰り返し系の業務を楽にしたいという思いで何かできないか考えた結果、マクロにたどり着き徐々にツールを作るようになっていくと徐々に案件や社内で「マクロの人」として認知されるようになり教える機会も増えてきてしまった。
しかし、独学でググりながらやっていたので教えられることが正直ない。
とはいえ、何も教えないというのも周りの人的に良い訳がなく、せめて「考え方」位なら教えられるので作る時の考え方を言語化してみた。
そうしたら7個あがったのでとりあえずまとめてみた。
(すべてのケースで7箇条が全部当てはまらない場合もある。あと異論はお待ちしてます。)
前提条件
マクロの有効化してない人は以下のページを参考に設定しましょう。
1.原案は「マクロの記録」で作ろう
一番最初にマクロ書こうとして陥るのが何をどう書いていいか分からなくなることだと思う。
それを防ぐためにも「開発」にある 「マクロの記録」 を選択し、記録している間に想定される動きを手動でやるとマクロ側でスクリプトを組んでくれる。
ここで記録された内容と完全に同じ処理ならそのままでも良いが、実際には参照するセルが違ってたり、何度も同じ処理を実行したりする等一致しないケースの方が殆どなので、マクロの動きや書き方を把握したり最初の原案を作る程度に留めておこう。
※「マクロ記録」の使い方について以下のページを参照。
2.「1つのセル」でできることは「1つのセル」でやろう
複数のセルを一括で作業をすると参照元/先の行列がズレるなど事故る可能性が高いのと、ゆくゆくは将来他のマクロを作るとなったときに他のマクロへの応用が利きにくくなる。
ある一行をコピーしたいのであれば、多少面倒だがその行をまるっとコピーするのではなく必要な列分セルのコピーを繰り返す方が安全。
3.二つ以上のシート/ブックに跨るときはそれぞれ定義しよう
「2」に関連することだが、マクロのセル選択は何も設定していないと「今表示しているシート」で処理をし始める。
例えばシートAの値をシートBに繰り返しコピーする作業をするときに、最初の1回はコピーできているけど2回目以降できていないケースがたまに発生する。
そうならないためにも、繰り返し作業などで複数のシートやブックに跨る作業をするのであれば最初にシート/ブックをそれぞれで定義してから作業するようにしよう。
4.ワークシートにリストを作って作業しよう
他の言語であれば配列とかリストとかクラスとか定義してオブジェクトを定義しその中に詰め込んでいくだろうが、Excelの場合何も考えずにシートに必要な中間データやファイルを書き込んでプールしていくことが可能。(ちなみにマクロで配列やクラスを作って対応することも可能だけど、ほぼ必要性がない。)
そのため事前に作業シートを作りそこにリストを作って、マクロ実行時にそこに書き込んだり、参照したりするスタイルにすればいい。
5.「テンプレートシート」を作ろう
どんな作業をやるかにもよるけど、outputが固定の場合には「テンプレート」となるシートを作っておいて、作業開始時にテンプレートをコピーしてから作業を始めると作業効率が図れるし、見る側的にも資料ごとに差が出にくくなるから見やすい。
6.整数値の変数は「Long型」で定義しよう
他の言語に触れていると とりあえず「整数=Int/Integer」 と思うぐらいには浸透していると思うが、VBAの場合は扱える数値の範囲や性能面どちらもで「Long型」が優勢なので「Integer型」を使う必要がない。
※詳しくは以下を参照
7.コーディング時のエラーを教えてくれることに慣れよう
他の開発ツール同様、行ごとにチェックしてくれるのは非常にありがたいのだが、作業途中で不正な記述があるとすぐさま モーダルとして 表示される。
※以下はif文で条件を書いてなくてエラーになっている場合(「OK」押さないと作業再開できない)
開発時にざっくり書きたいときに毎回モーダルが表示されるとウザさも感じるのだが、無視する精神か空想のオカンが毎回面倒見てくれているというおおらかな気持ちで作業するようにするといいかも。
さいごに
我流でExcelのマクロを使えるようになるためによく見てたサイトたちの紹介。
Office TANAKA
とりあえず 「マクロのこと知りたければココ!」 ってぐらいにマクロの基本的なことが書いてある。
エクセルの神髄
ここも「Office TANAKA」同様基本的なことから応用技術までそろってるサイト。
「Office TANAKA」かここのどちらかを見れば解決するケースが多い。
また問題集もあるので実践しやすい。
ついでにサイト内でExcelの関数のことも説明してくれているので便利。
わちょんのゆっくりIT
ExcelのマクロだけでなくExcelの関数の使い方などをゆっくり音声で教えてくれるチャンネル。
「エクセルの神髄」のVBA100本ノックの解説をしているので、文章で分からない人も動画見ればわかるかも。