マクロの編集~マクロ のコード(マクロの中身)は、どこにある

マクロ のコード(マクロの中身)は、どこ?

マクロの記録を利用して作成したマクロの中身(コード)はどのようになっているのでしょう。
Visual Basic Editor を使用して記録したマクロのコードを確認したり、編集したり リメイクしたりして いきましょう。

記録のマクロで作ったマクロのコードの画像

日本一やさしいマクロ講座入門編 マクロ講座2回-1

マクロの中身(コード)を見てみよう。

マクロの記録を利用して作成したマクロの中身はどのようになっているのでしょう。
前回は「セルの背景色の変更」ということをやってみましたね。
先週のことなんてすっかり忘れてしまった、と言う方は、もう一度復習しましょう。

セルの背景色の変更なんてツールバーのボタンをクリックすれば、済むことじゃない、なんてことは言わないでくださいね。
今回はマクロがどのように登録されているか中身を見てみましょう。
前回「マクロはVBAで書かれている」と説明しました。
書かれているということは,「書くために法則がある」ということが推測されます。

この法則を書くのが、「Visual Basic Editor(VBE)」です。
響きが難しげですが、メモ帳やノートパッドのようなエディタと同じようなものだと理解してください。
さてそれではこのVBEの画面を見てみましょう。

(サンプルファイルは、こちらから 2回サンプルデータ
Excelバージョン:Excel20192016201320102007

マクロの中身は?コードは英語? 

(1)前回のサンプルファイルを開いてください。
(2)そして、マクロの中身を表示させてください。
 今日は、VBEを表示させるショートカットキーをつかいましょう。
ショートカットキーで、Alt + F11 と入力するとVBEを表示させることができます
Alt + F11、または、
Visual Basicボタンでもかまいません。

マクロの中身

エクセルVBAのSubステートメント

(3)自動的に標準モジュールの中のモジュール1が選択されているかと思います。
もし表示されていないなら、選択してください。
するとこのような記録を見ることができます。(選択したテーマカラーの色によっては表示される内容が変わります。)
コードの中身はほぼ英語です。
英語圏で作成されたソフトですので、語句が英単語を連想できる ようにつくられています。
Macro1というマクロの名前が「Sub」と「()」で囲まれています。
Sub マクロの名前()
 処理する内容
End Sub

ステートメントとは「命令文」

マクロの中身2

「'」以降はプログラムとしては関係ない部分。
行の先頭に「'」が付いているのはコードではなくコメントという意味です。
説明やメモを書くときに「'」を使います。
もちろん、この部分が無くてもチャンと動きます。

プロシージャとは

普段私たちがマクロと呼んでいる物は、ほとんど、Subプロシージャをさしています。
プロシージャとは、VBAの命令文を1つにまとめたものです。
VBAコードは1行ごとに命令文を記述して実行されますが、ここで紹介するような、短い1行や2行のマクロは学習用で、実務では、複数の命令文を記述して実行しています。
1行や2行の短いものや、複数の命令文をまとめたものをプロシージャとよびます。
プロシージャは3種類あります。
Subプロシージャ
Functionプロシージャ
Propertyプロシージャ

(4)Sub Macro1()の後の、次からの行が実際の動作を命令するコード部分です。

    With Selection.Interior
        .Pattern = xlSolid
        .PatternColorIndex = xlAutomatic
        .ThemeColor = xlThemeColorAccent4
        .TintAndShade = 0.799981688894314
        .PatternTintAndShade = 0
    End With
そしてEnd Subでおわる。
End SubはSub Macro1( )の結語です。

(5)コードはSubで始まりEnd Subで終わります。
その間にあるのがコメント部分と実行部分のコードです。
コメントは、自分あるいは、他の人のために書いておく覚書なので、プログラム自体にはなくてもいいのです。

マクロの中身2

最低限必要な部分は

Sub Macro1()
    With Selection.Interior
        .ThemeColor = xlThemeColorAccent4
        .TintAndShade = 0.799981688894314
    End With
End Sub
だけです。ただ、.TintAndShade = 0.799981688894314 という数値が気になります。こんなに小数点以下が長いと覚えられない・・・。 大丈夫、自分で書く時は、それほど厳密じゃなくても、近い色にすることはできます。

モジュールとは


マクロで実行する 処理( プロシージャ )が記述されている場所の名前を モジュール と言います。
記録のマクロでは、自動的にエクセルが モジュールを追加して、そこにコードを記述してくれます。
モジュール 1つに対して最低限 ひとつのプロシージャーが対応します。
また1つのブックには複数のモジュールを保存でき そして1つのモジュールには複数のプロシージャを記述できます。