Subプロシージャとは|CATIAマクロの作成方法
ここではVBAコードの基本『Subプロシージャ』について書いていきます。
VBAの勉強をする上で1番初めに知るべきコードの1つで、超基礎的な内容なのでここでしっかりと押さえておきましょう。
このページでは以下の内容を学ぶことができます。
Subプロシージャの使い方
Subプロシージャ
VBAでマクロのコードは『プロシージャ』という1つのかたまりにまとめる必要があります。
コードは以下のように書くことでプロシージャとしてまとめることができます。
(以下の青文字部は自分の好きな名前に変更可能です)
Sub プロシージャ名()
‘実行したい処理のコード
End Sub
『Sub プロシージャ名()』と『End Sub』の間に実行したいマクロのコードを書きます。
この『Sub プロシージャ名()』と『End Sub』と『実行したいコード』をひとまとめにしたものを『Subプロシージャ』といいます。
マクロの実行はこのプロシージャ単位で行われます。
たとえば1つのモジュール内にいくつものプロシージャを書くことができますが、実行するのはその中のうちの1つだけです。
厳密にいうとプロシージャを実行してるんですね!
プロシージャを実行すると書かれているコードの上から順に処理がされていきます。
コードを書く順番によっては結果が変わってくるので注意しましょう。
たとえば以下のコードを見てみましょう。
Sub メイン処理() Subプロシージャ
MsgBox (“こんにちは”)
MsgBox (“こんばんは”)
End Sub
『MsgBox (“ ”)』はメッセージボックスで任意の文字を表示させるための構文です。
Subプロシージャは上から順に処理が行われていくので、上のコードを実行すると以下のように『こんにちは』『こんばんは』の順にメッセージが表示されます。
はじめのうちは難しく考えずに『Sub プロシージャ名()』と『End Sub』の間に”実行したい順番”に処理を書いていけばいいと覚えておけば大丈夫です。
※VBEから実行する場合はプロシージャ名は何でもいいですが、マクロウィンドウやツールバーからマクロを実行する場合にはプロシージャ名が「CATMain」になっていないと実行できないので注意して下さい。
Subプロシージャの分割
Subプロシージャは複数に分けてを使うことができます。
たとえば以下2つのコードは全く同じ処理が行われます。
Sub メイン処理()
MsgBox (“こんにちは”)
MsgBox (“こんばんは”)
End Sub
Sub メイン処理()
処理1
処理2
End Sub
Sub 処理1()
MsgBox (“こんにちは”)
End Sub
Sub 処理2()
MsgBox (“こんばんは”)
End Sub
どちらの処理も結果としては先ほどと同様に『こんにちは』『こんばんは』の順にメッセージが表示されます。それぞれのプロシージャの処理の流れは以下のとおりです。
プロシージャを分割している方のコードでは別のプロシージャを呼び出してそれを実行という処理をしてます。コードだけ見ると少しわかりづらいですが上の画像のように考えるとすぐに理解できると思います。
プロシージャを分割する理由
これまでの例は処理が非常に簡単だったのでこう思う人も多いと思います。
しかし、実際にしっかりしたマクロを作っていくとプロシージャは分割したほうがいろいろと都合がよいことがわかります。
たとえば、ある一部の機能を修正したい場合を考えてみます。
もし1つのプロシージャにすべての機能を書いていた場合、一部の機能だけの修正とはいえそのメイン処理のコード自体を書き直すことになります。このときに気づかずに何かを消してしまったりちょっとしたミスがあるだけでそのマクロはすべて実行できなくなってしまう場合が出てきます。
しかし機能別でプロシージャを分けておけば、修正したい機能のプロシージャのコードだけを変えればよく、他のコードをいじる必要もありません。また、もしこのプロシージャでミスがあったとしてもメイン処理のプロシージャから切り離せば他の機能に影響が出ることはありません。
このようにプロシージャを分けておくことで部分的に処理内容を管理することができます。
機能を部分ごとにプロシージャ分けしておくことでリスク回避につながりますし、コードを見たときに自分も見やすいものになります。
本サイトでは簡単なマクロの解説になるので”1つのプロシージャでの作成が主”になっています。
しかし、この分割の考えは非常に重要なので「プロシージャにはこういった使い方がある」ということは知っておきましょう。
まとめ
今回でてきた基本の構文は以下のとおりです。
Sub プロシージャ名()
‘実行したい処理のコード
End Sub
はじめのうちはあまり考えずに『Sub プロシージャ名()』で書き始めて『End Sub』で終わればいいと思っておけば大丈夫です。このほかにもFunctionプロシージャというものがありますが、初めのうちはSubプロシージャさえ覚えておけば問題ありません。