自分以外がつくったExcelマクロを解読する方法

Excelマクロ・VBA入門

Excelマクロを勉強するのに、自分以外がつくったものを解読するのはおすすめです。
その方法をまとめてみました。

※Excelマクロ by Leica M10

自分以外がつくったExcelマクロの活用

プログラミングを勉強するために、既存のものを読んでみるというのはいい練習になります。
文章を書くことを勉強するために、文章を読むように。
プログラミングも文章も、私が今でもやっていることです。

・自分以外がつくったExcelマクロ
・つくってもらったExcelマクロ
・ネットや本にあるExcelマクロ
などを解読して、勉強に活用してみましょう。

特にオリジナルでつくってもらったときは、チャンスです。
自分の事例にあったExcelマクロが手に入っているわけですから。
より理解しやすいものです。
個別コンサルティングではその場でオリジナルのマクロを書いてお渡しすることもやっています。セミナーでも質疑応答で可能な限り。)

自分でプログラミングできるようになれば、効率化がより進みます。

 

Excelマクロのコードを読み解く方法

Excelマクロは、Excelファイルに入っています。
そのExcelファイルで、Alt+F11を押してみましょう。

このような画面が開くはずです。
VBE (Visual Basic Editor)というマクロを書き、動かすソフトで、Officeについています。
そこにコードが表示されるのですが、もし表示されていないときは、左側のメニューで、該当のファイルの[標準モジュール]を探し、Module1をダブルクリックしてみましょう。
(ごくまれにパスワードがかかっていて、コードを見ることができない場合もあります)

ここでキーワードというものを目立たせてみます。
もともと、青色なのですが、もうちょっと目立たせた方が読み解くときに便利です。

Altを押しながらT→Oで、[ツール]→[オプション]を開き、 [エディターの設定]から[前景](フォントの色)、[背景)を設定します。

このようになり、キーワードが目立つようになるのです。

まず、このSub とEnd Subに注目しましょう。
これが、Excelマクロの1つのくくりです。
Subではじまり、End Subで終わります。

Subのあとにある、testは、名前。
任意につけます。
私はアルファベットでつけますが、日本語の場合も。

次に注目したいのは、Dim。
「定義する」という意味で、そのあとの、nは変数といわれるものです。
nはなんでもよく、書き手が決めます。
そのnがその後に出てくるはずです。
nに1が入れば、1と処理し、2が入れば2と処理します。

この変数の付け方は、書き手の好みやクセが反映されるものです。
他人が書いたコードが読みにくい場合もあります。
文章と同様に。

コードの中で、どれが変数で、どれが必須の構文なのかを確認しながら読み解いていきましょう。
変数が読みにくかったら、自分で、このnをすべて変更すれば読みやすくなることも多いです。
私は日本語の変数だと、読みにくく感じます。

変数のあとに、As long、As Stringというものがある場合も。
これは、「数値」「文字列」といった指定をするものです。

次に注目したいのは、繰り返しの構文。
ない場合もありますが。

ここでは、
・Dimで定義し、
・ForからNextまでを
・For i = 〇 To △で、iが〇から△になるまでを
繰り返しています。

どこまで繰り返すかは、10や100と指定もできるのですが、データ数が毎回違う場合は、マクロで数えたほうが楽です。
最大行という意味で、 Worksheets(“data").Range(“a" & Rows.Count).End(xlUp).Rowを使っています。

この繰り返しは、Forではなく、
・Do Loop
を使っている場合もあり、好みです。
使い分けている方もいらっしゃいますし、最初に習ったものをそのまま使っている場合もあります。

どういうパターンを使っているか、わからないものがあれば、そのキーワードでググってみるのもいいでしょう。

繰り返しの中に、n=n+1とあったら、「1つずつ増やしている」と考えれば大丈夫です。
この場合、最初は2行目を処理し、その次は、3、4、5、と1つずつ増やして処理をします。

 

条件分岐は、If。
Excelの関数にもあるものです。
これがあったら、何か条件で処理をわけているんだなと思っていただければ。

全体像を把握してから、細部をみていきましょう。
多くの場合、セルからセルに転記をしていることが多いです。
〇 = △
とあれば、〇に△を入れる、転記すると考えましょう。

Worksheets(“freee").Range(“d" & n).Value = Worksheets(“data").Range(“b" & i).Value
で、nが2、iが2とすると、
シート「freee」のセルD2に、

シート「data」のセルB2を入れるという処理です。

シートは、WorksheetsやSheets、セルは、RangeやCellsというパターンがあり、流派や好みのようなものと考えていただければ。

読み解いていく中でわかったことは、コメントとして残すのもおすすめです。
文章を入れて、頭に’(シングルコーテーション Shift+7)を入れれば、緑色になり、自由に文字を入れることができます。

すでにあるコメントを書き直してもかまいません。

もし、シングルコーテーションをつけずに、文字を入れると、マクロを実行したときにエラーが出ます。

Excelマクロの動作を確認する方法

 

Excelマクロを動かしてみるのもおすすめです。
Excel側にこういったボタンがあることもあります。
その場合は、こちらの記事を参考にしていただければ。
Excelのボタンのしくみ。ボタンにはマクロが登録されている。

通常は、VBE上で、F5キーを押せばすべてのマクロを実行できます。
F8キーなら、1行ずつ実行できるのです。
ちょっとずつ実行して、Excel側の動きを見ながら、読み解いていきましょう。

黄色に部分が、「これから実行する」ものです。

シート「freee」のセルD2に、シート「data」のセルB2を入れるという処理で、「これから実行する」ので、

 

まだ、シート「freee」には何も入っていません。

F8キーを押し、1行実行すると、

このように、セルD2へ転記されます。

このとき、カーソルを変数のnやiにあててみると、その中に入っている数値がわかるので、確認してみましょう。
F8キーですすめていくと、これが3、4、5……と変わっていくのわかるはずです。

こんな感じで動かしてみて、「これっていらないんじゃないか?」と消してみたり、「こうしたほうがいいんじゃないか」とコードを変えてみたりしてみましょう。

既存のものが正しい、神というわけではありません。
プログラミングに限らず、既存のソフトも同様です。
自分なりの工夫をしたり、好みを反映したりしていきましょう。

コードを見ながら最初から書いてみるのも、もちろんおすすめです。
Excelマクロをはじめとするプログラミングは、言語であり文章。

自分なりのものがあるはずです。
書き手になりましょう。

 



■編集後記
昨日は、午前中に個別コンサルティング。
午後は、講座、セミナーの準備を中心に。

夕方プールで泳いだら眠くて、帰宅後ちょっと仮眠……。
まだまだ体力がもとに戻っていない感じです。

1日1新Kindle『1日1新』
Xbox Series X ENDER LILIES

■娘(4歳4ヶ月)日記→Kindle『娘日記』
セミを探すのが好きなのですが、昨日は鳴いていませんでした。
「パパと一緒で、昨日眠れなくて、また寝てるんじゃない」と。
昨日は、変な時間に起きてしまい、7時からちょっと寝てたのです。
セミもおんなじだと……。