マクロとは「ソースプログラムを生成する言語系」のことで、
本来のプログラムを指す言葉ではありません。
従って、VBAのプログラムを「マクロ」と呼ぶことに抵抗が
あります。
マクロアセンブラでは以下のような使い方をします。
【マクロ定義】
@SAVE MACRO ARG ←マクロの定義の開始
PUSH ARG
ENDM ←マクロの定義の終了
【ソース】
MOV EAX,870
@SAVE ECX ←マクロ文
@SAVE EAX ←マクロ文
【マクロ展開後】
MOV EAX,870
PUSH ECX ←マクロにより展開されたソース
PUSH EAX ←マクロにより展開されたソース
※"@"は英数字と共に識別名として使用できる文字であって、
「マクロだから”@”で始める」という規約ではありません。
C言語では以下のように使います。
#define MC 4 + 5 ←マクロの定義
【ソース】
if ( code == MC ) ←マクロの使用
"MC"は単に"4 + 5"という文字列に置き換えられるだけです。
MC=9ではありません。従って、x = MC * 3; と記述すると、
xには19が代入されます。9 * 3 ではなく 4 + 5 * 3 だからです。
つまり、書式が合っていれば、単に置き換えるだけで、
プログラムの文法に適うかどうかはマクロの関与する
ところではありません。
先のマクロアセンブラで、以下のように間違えたとします。
@SAVE MACRO ARG
SUSH ARG
ENDM
SUSHという命令はありませんが、定義自体は正しく、
マクロは正常に展開されます。その後のアセンブルで
エラーになります。
要約するとマクロ≠プログラムです。
個人としてはVBAプログラムをマクロとは呼びたく
ないのですが、世間一般ではVBAプログラムのことを
マクロと呼んでいます。