Subプロシージャとは|CATIAマクロの作成方法

ここではVBAコードの基本『Subプロシージャ』について書いていきます。
VBAの勉強をする上で1番初めに知るべきコードの1つで、超基礎的な内容なのでここでしっかりと押さえておきましょう。

このページでは以下の内容を学ぶことができます。

icon-check-square Subプロシージャとは
icon-check-square Subプロシージャの使い方

 

Subプロシージャ

VBAでマクロのコードは『プロシージャ』という1つのかたまりにまとめる必要があります。
コードは以下のように書くことでプロシージャとしてまとめることができます。
(以下の青文字部は自分の好きな名前に変更可能です)

icon-code Subプロシージャ

Sub プロシージャ名()
  ‘実行したい処理のコード
End Sub

『Sub プロシージャ名()』と『End Sub』の間に実行したいマクロのコードを書きます。
この『Sub プロシージャ名()』と『End Sub』と『実行したいコード』をひとまとめにしたものを『Subプロシージャ』といいます。

 
マクロの実行はこのプロシージャ単位で行われます。
たとえば1つのモジュール内にいくつものプロシージャを書くことができますが、実行するのはその中のうちの1つだけです。

よくマクロの実行とか言いますけど
厳密にいうとプロシージャを実行してるんですね!

 

プロシージャを実行すると書かれているコードの上から順に処理がされていきます。
コードを書く順番によっては結果が変わってくるので注意しましょう。 

たとえば以下のコードを見てみましょう。

icon-code SubプロシージャSub メイン処理()
    MsgBox (“こんにちは”)
  MsgBox (“こんばんは”)
End Sub

『MsgBox (“ ”)』はメッセージボックスで任意の文字を表示させるための構文です。
Subプロシージャは上から順に処理が行われていくので、上のコードを実行すると以下のように『こんにちは』『こんばんは』の順にメッセージが表示されます。

 
はじめのうちは難しく考えずに『Sub プロシージャ名()』と『End Sub』の間に”実行したい順番”に処理を書いていけばいいと覚えておけば大丈夫です。

※VBEから実行する場合はプロシージャ名は何でもいいですが、マクロウィンドウやツールバーからマクロを実行する場合にはプロシージャ名が「CATMain」になっていないと実行できないので注意して下さい。

 

Subプロシージャの分割

Subプロシージャは複数に分けてを使うことができます。

たとえば以下2つのコードは全く同じ処理が行われます。

icon-code プロシージャ単体

Sub メイン処理()
    MsgBox (“こんにちは”)
    MsgBox (“こんばんは”) 
End Sub

icon-code プロシージャ分割

Sub メイン処理()
    処理1
    処理2 
End Sub


Sub 処理1()
    MsgBox (“こんにちは”)
End Sub


Sub 処理2()
    MsgBox (“こんばんは”)
End Sub

どちらの処理も結果としては先ほどと同様に『こんにちは』『こんばんは』の順にメッセージが表示されます。それぞれのプロシージャの処理の流れは以下のとおりです。

プロシージャを分割している方のコードでは別のプロシージャを呼び出してそれを実行という処理をしてます。コードだけ見ると少しわかりづらいですが上の画像のように考えるとすぐに理解できると思います。

 

プロシージャを分割する理由

両方同じ結果なら1つのプロシージャに全部書けばいいのでは?

 
これまでの例は処理が非常に簡単だったのでこう思う人も多いと思います。
しかし、実際にしっかりしたマクロを作っていくとプロシージャは分割したほうがいろいろと都合がよいことがわかります。

たとえば、ある一部の機能を修正したい場合を考えてみます。
もし1つのプロシージャにすべての機能を書いていた場合、一部の機能だけの修正とはいえそのメイン処理のコード自体を書き直すことになります。このときに気づかずに何かを消してしまったりちょっとしたミスがあるだけでそのマクロはすべて実行できなくなってしまう場合が出てきます。


 

しかし機能別でプロシージャを分けておけば、修正したい機能のプロシージャのコードだけを変えればよく、他のコードをいじる必要もありません。また、もしこのプロシージャでミスがあったとしてもメイン処理のプロシージャから切り離せば他の機能に影響が出ることはありません。

 

このようにプロシージャを分けておくことで部分的に処理内容を管理することができます
機能を部分ごとにプロシージャ分けしておくことでリスク回避につながりますし、コードを見たときに自分も見やすいものになります。

形状セットで作業履歴を分けてるのと同じような考えですね。

 
本サイトでは簡単なマクロの解説になるので”1つのプロシージャでの作成が主”になっています。
しかし、この分割の考えは非常に重要なので「プロシージャにはこういった使い方がある」ということは知っておきましょう。

 

まとめ

今回でてきた基本の構文は以下のとおりです。

icon-code Subプロシージャ

Sub プロシージャ名()
  ‘実行したい処理のコード
End Sub

はじめのうちはあまり考えずに『Sub プロシージャ名()』で書き始めて『End Sub』で終わればいいと思っておけば大丈夫です。このほかにもFunctionプロシージャというものがありますが、初めのうちはSubプロシージャさえ覚えておけば問題ありません。

2019年12月28日CATIA, CATIAマクロ

Posted by Lic