変数の宣言と代入|CATIAマクロの作成方法
今回は『変数』についての内容です。
変数はVBAをはじめほとんどのプログラムで使われるものです。
変数自体の考え方はあまり難しいものではないので、あまり難しく考えず学んでいきましょう。
今回学べる内容は以下のとおりです。
変数の宣言と代入方法
オブジェクト型変数とは何か
オブジェクト型変数の宣言と代入方法
変数とは
VBAをはじめ、ほとんどのプログラムでは『変数』というものが使われています。
変数とは簡単に言うと数値や文字列、オブジェクト(CATIAでいうサーフェスやソリッドなど)を一時的に入れて空箱のことです。
空箱といってもさまざまなタイプのものがあり、数字を入れる用の箱、文字を入れる用の箱、サーフェスを入れる用の箱など様々です。
このような箱(変数)に入れるものの種類のことを『データ型』といいます。
規則として変数1つにつき、1つのデータ型を指定する必要があります。
要するに「この箱は数字を入れる用の箱です」というように、どのような種類のものを取り扱う箱なのかを宣言する必要があるということです。
データ型
変数に数値や文字列を入れる場合、データ型を指定する必要があります。
VBAのデータ型の有名どころは以下の通りです。どれも基本的なものなので覚えておきましょう。
※データ型は下記ですべてではありません。
名称 | データ型 |
整数型 | Integer |
単精度浮動小数点数型 | Single |
文字列型 | String |
ブール型 | Boolean |
バリアント型 | Variant |
整数型(Integer)
整数型はその名の通り整数を取り扱うことのできるデータ型です。
変数に整数を入れたいという場合は、このデータ型を使います。
単精度浮動小数点数型(Single)
単精度浮動小数点数型は簡単にいうと『小数』を取り扱うことのできるデータ型です。
整数型の場合は0.5や4.2のような小数を入れることができません。
変数を小数として使いたい場合はこのデータ型を使います。
文字列型(String)
文字列型もその名の通りで文字列を取り扱うことのできるデータ型です。
このデータ型の場合、数字を入れたとしても文字列として認識されます。
ブール型(Boolean)
ブール型は変数にTrue(正)かFalse(負)のどちらかのみを入れることのできるデータ型です。
簡単にいえばスイッチの『オン』と『オフ』のようなイメージです。
ある処理の途中でスイッチの切り替え、つまりはブール型の切り替えをすることで処理を分岐させたりするときに使用します。
バリアント型(Variant)
バリアント型は上記のデータ型を含めた全てのデータを取り扱うことのできるデータ型です。何でも取り扱えることはできますが多様するとメモリを多く使用したり、予期せぬエラーが発生したりする場合があるためこのデータ型は基本的には使わないことをオススメします。
変数の宣言
変数を使うには、その変数を宣言する必要があります。
宣言というと難しく感じますが、要は「これから〇〇という変数を使いますよ」とマクロに伝えるということです。この変数の宣言には『変数の名前』と『データ型』を
変数を宣言するには以下のような構文を使います。
Dim 変数名 As データ型
この構文以外にも「Dim」のかわりに「Public」で変数を宣言する方法もあります。はじめのうちは「Dim」で宣言することが多いので、ここでは「Dim」での宣言方法のみを見ていきましょう。
変数の名前を指定
変数を宣言する時にはまず『Dim』と入力し、その次に変数名を書いていきます。
変数名は基本的には自由に決めることができます。
その変数に何を入れるかを考えながら、わかりやすい名前を付けておきましょう。
※以下のような場合は変数名が指定できずエラーが発生するため注意して下さい。
【NG変数名】
・アンダーバー[_]以外の記号が使われている
・変数名の中にスペースが含まれる
・1文字目が数字もしくはアンダーバー[_]
・VBAコードですでに意味を持っている文字列 (DimやAsなど)
データ型を指定
変数名を決めたら次に『As データ型』でこの変数のデータ型を指定します。
データ型は先に出てきたコードを使い「As Integer」や「As String」のように書きます。
この『As データ型』は省略することが可能です。
省略した場合は『As Variant』を書いた場合と同じ扱い、つまりは全てのデータを取り扱うことのできるデータ型となります。
ただ、Variantのところでもいいましたが、1つの変数でどのデータ型でも扱うことができてしまうと予期せぬエラーが発生する場合があるので、基本的には省略せずにしっかりとデータ型を指定しておきましょう。
変数に代入
宣言した変数はそのままでは空っぽの箱の状態です。
この空箱の中に数値や文字などを代入して(変数にいれて)いきます。
代入するには以下のような構文を使います。
変数名 = 値
変数に何かを代入するには、『変数名=値』と入力します。
変数名には先に宣言している変数の名前を、値には代入したい数字や文字列などの値を入力します。
このとき、変数を整数型で宣言したのであれば値は整数、文字列型で宣言したのであれば値は文字列である必要があります。宣言したデータ型と違うタイプのものを入れるとエラーが発生してマクロの実行ができないので注意して下さい。
値の上書き
プログラムは上の行から下の行へと順々に処理されていきます。
そのため変数に値を代入するとき、その変数にすでに何かが入っていた場合、その変数の中身は新しく代入するものが上書きされます。
たとえば以下のコードの場合、最終的な変数の中身は「0」となります。
Sub マクロテスト()
Dim Suji As Integer
Suji = 5 ‘Sujiに5を代入
Suji = 0 ‘Sujiに0を代入
End Sub
数値を代入
変数に数値を代入する場合、ただ単に数字を入れるだけでなく四則演算(+ , – , * , / )を使い、その計算結果を代入することができます。
たとえば以下のコードを見てみましょう。
Sub マクロテスト()
Dim Teihen As Integer
Dim Takasa As Integer
Dim Menseki As Integer
Teihen = 5 ‘Teihenに5を代入
Takasa = 10 ‘Takasaに10を代入
Menseki = Teihen * Takasa / 2 ‘Mensekiに計算式の結果を代入
End Sub
このコードでいうMensekiの部分が四則演算を使った代入となっています。
この場合「Teihen×Takasa÷2」となっているのでMensekiの中には数値「25」が代入されます。
また以下のように同じ変数をつかった計算式を利用することもできます。
Sub マクロテスト()
Dim Suji As Integer
Suji = 5 ‘Sujiに5を代入
Suji = Suji + 10 ‘Sujiに「Suji+10」の値を代入
End Sub
この場合 Suji の中には最終的に「15」という数値が代入されます。
※色分けしてあるのでどういう計算が行われているのかは理解できると思います。
文字列を代入
変数に文字列を入れる場合、数値とは違い以下のようにダブルクォーテーション[“]で文字列の前後を囲む必要があります。
Sub マクロテスト()
Dim Moji As String
Moji = “こんにちは“
End Sub
文字列を代入では、アンパサンド[&]を使うことで複数の文字列をつなげることができます。
たとえば以下のコードを見てみましょう。
Sub マクロテスト()
Dim MojiA As String
Dim MojiB As String
Dim MojiC As String
MojiA = “STAR”
MojiB = “WARS”
MojiC = MojiA & MojiB
End Sub
MojiCではアンパサンド[&]をつかってMojiAとMojiBをつなげて1つの文字列として代入しています。この場合MojiCには「STARWARS」という文字列が代入されます。
文字列を1つのまとめるのはいいけど「STAR WARS」のように間にスペースがほしいという場合もあると思います。その場合は最後の1行を以下のように書くことで解決することができます。
MojiC = MojiA & ” ” & MojiB
この構文はMojiAとMojiBの間に半角スペースという文字列を入れていることを表しています。
上記の半角スペース部分には普通の文字列を入れることもできるため、上記の「” “」を「”_”」と書き換えればMojiCには「STAR_WARS」という文字列が代入されます。
オブジェクト型変数とは
CATIAでマクロを作るうえで、数字や文字列などの代入以外にオブジェクトの宣言と代入が必須となってきます。
オブジェクトとはVBAで操作する時の対象となるもののことをいいます。
たとえば形状セットを一括で作る操作を行いたい場合は「形状セット」が、ドキュメントウィンドウの切り替えという操作をしたい場合は「ドキュメントウィンドウ」が操作の対象にあたります。
CATIAマクロではこれらオブジェクトを変数に入れて操作するのが一般的です。
このようなオブジェクトの入った変数のことを『オブジェクト型変数』といいます。
※オブジェクトの詳細は『オブジェクトとコレクション/プロパティとメソッドとは』を参照下さい。
オブジェクト型変数の宣言
オブジェクト型変数の宣言は以下の構文を使います。
Dim 変数名 As オブジェクト名
基本的には通常の変数の宣言と同じ書き方ですが、データ型の部分にオブジェクト名を入力します。
オブジェクト型変数に代入
オブジェクト型変数にオブジェクトを代入するには以下の構文を使います。
Set 変数名 = オブジェクト
コチラも基本的には通常の代入と同じ書き方ですが、書きはじめに「Set」を付ける必要があります。
オブジェクト型変数に代入するときに「Set」をつけ忘れた場合、通常の変数に代入するときに「Set」をつけてしまった場合はエラーが発生するので注意しておきましょう。
まとめ
今回の内容をまとめると以下のとおりです。
変数の宣言は「Dim 変数名 As データ型」
変数への代入は「変数名 = 値」
オブジェクト型変数とはオブジェクトを入れるための変数
オブジェクト型変数の宣言は「Dim 変数名 As オブジェクト名」
オブジェクト型変数への代入は「Set 変数名 = オブジェクト」
VBAでコードを書き始めるとき、どれも一番初めに書くことの多い構文なので、上記4つの構文は丸暗記しておきましょう。
CATIAマクロを本気で勉強するなら