Excelマクロの極意~マクロ脳を育てる!~

記事
IT・テクノロジー
※「Excelマクロの極意」はシリーズとして有料記事として投稿しておりますが、そのほぼ全文を読めるように設定しております。有料記事についても、全記事で同じ内容としていますので、一つの記事を購入するだけで補完できます!

マクロ脳とは?

何はなくとも、Excelマクロにおいて習得・習熟していく過程で一番重要になるのが、「マクロ脳」を作ることです。簡単に言ってしまえば、縦横に長~い表組のデータなどを見たときに、「関数でやる」か「マクロでやるか」を考える先に、「とりあえずマクロを組んでみるか」というように考えられるかということです。
…もちろん、対応内容によっては、関数を利用したほうが圧倒的に早く作業が終わることが多いですが、そこの判断は育ってきたマクロ脳…というより、マクロも視野に入れられる、もう一段階上のExcel脳ができてからの世界です。

マクロ脳の作り方

作り方は非常に簡単です。表組があるようなエクセルファイルを起動したら、「ひとまず、Alt+F11を押してVBEを起動し、定型の文章を入力する」だけです。VBEとは、Visual Basic Editorの略称で、「マクロを記述するためのスペース」と思っていただければ。そして、入力する定型の文章は下記のような奴です。

まずはコードを確認

Sub test()
Dim i As Long
For i = 2 To Cells(Rows.Count, 1).End(xlUp).Row
    Debug.Print Cells(i, 1)
Next
End Sub
内容が良く分からないですね?…多分、私もいきなりこれを入力しろと言われても、意味が分からないと思います。でも、このたった6行のコードで1万行でも2万行でも処理を一瞬で終わらせることが出来てしまいます。解説を少ししてみましょう。

お約束事

Sub test()

End Sub
Excelマクロの中で使われる言葉通りでいうと、サブプロシージャの宣言ということになります。プログラムごとに設定する名前で、マクロの実行をする際に指標となるものです。基本的には入力する際に文字の制約はほぼないので、自分がわかりやすいもので設定すればほぼ間違いないでしょう。

変数の設定と宣言

Dim i As Long
多くのマクロ初心者が躓くのが、「変数って良く分からん!」というお話だと思います。はっきり言えば、万人にわかりやすい説明というのが難しい部類のものです。多くの書籍などでは、「データを格納する箱」という表現をしていますし、私自身も集団講習のような場所ではそのような表現をしています。
今回の変数では「i」という箱を作って(Dim i)、そこには数字しか入れません(As Long)というルールを設定しています。
生活に密接したお話でいえば、「冷蔵庫」には「食料」しか入れませんというルールを設定した感じです(通帳を入れたり、タオルを冷やすためには使いませんというルールを作成)。
中に入れるものを絞ることで、「目的」と「用途」をより明確にすることが出来るため、今後のマクロ作成ではより効率的にコードの入力ができる期待ができます。
あえてルールで縛らない箱というものも用意することが出来ますので、慣れないうちはその箱を用意するようにすると良いかもしれません。
※ただし、箱の中身は最初に入れたものに依存します

繰り返し処理と中身の表示

For i = 2 To Cells(Rows.Count, 1).End(xlUp).Row
    Debug.Print Cells(i, 1)
Next
Excelマクロにおける真骨頂は、繰り返し処理と(今回はありませんが)分岐処理です。プログラミングも突き詰めていけば、この2つの処理をうまく組み合わせることでその動作を制御しています。
今回のコードでは、行数が変化しても柔軟に対応できることでメンテナンスを最小限に抑えることを目的としています。肝となっているのは、「Cells(Rows.Count, 1).End(xlUp).Row」ここの一文です。
簡単に解説すると、「A列の最終行(Excel2007~Excel2019の場合「1,048,576行」)から、上方向にさかのぼって最初にデータが入力されている行を指定」という操作を行っています。この表現は、Excelマクロにおいてはあらゆる構文に使うことが出来ます。…ちなみに、「最終列」を取得する場合は、「Cells(1, Columns.Count).End(xlToLeft).Column」という構文になります。
中央の「Debug.Print Cells(i, 1)」は、「i」という変数に2行~最終行までの行番号が順次入力されていくため、データとしては、A列の各行の値が表示されることとなります。その内容を、「イミディエイトウィンドウ」という、VBE上の「情報確認窓(のような場所)」に次々と表示をするための構文です。Excelマクロに限った話ではありませんが、「実践」と「確認」を怠ると多くの場合でひどい目に遭いますので、慎重になりすぎるくらいに事を進めていってください。
※Excelマクロで実施した変更内容は、「元に戻す」を使って前の状態に戻すことが出来ません!

終わりに

個人的な見解ではありますが、マクロ脳は「少しずつ育つ」ものであると同時に、ある程度の習熟が進むと、「突然理解する」瞬間がある不思議な脳みそです。その「瞬間」は難しいプログラムを悩みながら作っているときよりも、何度も作った簡単な構文を最適化した瞬間に訪れます。まずは、作ることを苦痛に感じないマクロ脳をしっかりと育てていきましょう!
この続きは購入すると読めるようになります。
残り:1,219文字
Excelマクロの極意~マクロ脳を育... 記事
IT・テクノロジー
1,000円
サービス数40万件のスキルマーケット、あなたにぴったりのサービスを探す