引数付きでサブルーチンを呼び出します

 マクロの頭についている Sub とは Subroutine のこと。つまり、全てのマクロは他のマクロのサブルーチンとしてはたらくことができるということです。特にあるマクロの中で、引数を指定して他のマクロを呼び出すようなプログラムを作成すれば、全体として構造の分かりやすいシステムを作り上げることができるのです。こばとの講義と同じように、マクロだってわかりやすく作るのが一番ですねー(自分で言っちゃったー)。
 

文字 a を b に変換するマクロ

 簡単な例として、任意の文字列の中に含まれる a という文字を b に変換するマクロを作ってみましょう。

ab変換マクロ

 まずサブルーチンから作ってみます。

 Sub ab変換 (w1 As String)

  Dim w2 As String

 ‘任意の文字 w1 の a を b に変換
  w2 = Replace(w1, “a”, “b”)

 ‘変換された文字をプリント 
  Debug.Print w2

 End Sub

 マクロ名のあとの ( ) に変数とデータ型宣言が記述されています。

Sub ab変換 (w1 As String)

 これは文字列型 w1 を引数としてはたらくマクロであることを示しています。このように、引数の指定されたマクロは単体では実行できないようになっていて、このマクロを動かすための本体が必要となります。3行目の

w2 = Replace(w1, “a”, “b”)

では Riplace関数が使われています。上のコードは w1 という文字に含まれる a を b に置き換えるという意味です。

文字置換マクロ

 サブルーチンを動かす本体はちょー簡単なマクロです。

 Sub 文字置換()

  ab変換 “aaa”
  ab変換 “aac”
  ab変換 “abc”

 End Sub

 たったこれだけですよー。本体でサブルーチンを動かすには

サブルーチン 引数

と書くだけでいいのです。楽ちんですねー。上のマクロは aaa, aac, abc という文字列を「 ab変換マクロ」の変数 w1 に受け渡して「含まれている a を b に変えてくださいな」とお願いしているわけです。このマクロを実行するとイミディエイトウィンドウに bbb, bbc, bbc と表示されるですよ。ぜひお試しくださいなー。

コメント

タイトルとURLをコピーしました