今回はよく使う定数についてざっくり紹介したいと思います。VBA以外でも使う内容になりますので、是非参考にしていただければと思います。
定数とは
定数についてざっくり言うと、「予め決められた(定められた)変数」のことです。文字通りの意味ですね。
基本的な機能は普段使っている変数と共通するところはあるのですが、異なる点も当然あるので、それぞれ説明します。
変数と定数の違い
それでは変数と定数の違いをそれぞれざっくり説明します。
Const…で宣言する
通常、変数を宣言する時はDim…で宣言しますが、定数はDimで宣言しません。
定数を宣言する時は、Const…で宣言します。
Dim str_Haribona
Const c_str_Haribona
注意点として、定数は宣言と同時に値を設定しなければなりません。
'後で代入してもOK
Dim str_Haribona as String
'宣言と同時に代入しないとダメ(エラーが発生する)
Const c_str_Haribona as String = "はりぼなブログ"
変数の場合は宣言と別に値を代入してもOKですが、定数は宣言と同時に値を代入しなければならないことを覚えておきましょう。
再代入できない
定数は変数と違い、値を再代入することができません。
変数は値を入れなおすこと(再代入)が可能ですが、定数は最初に代入した後に値を入れなおすことはできないので注意しておきましょう。
Dim str_Haribona As String
Const c_str_Haribona As String = "はりぼなブログ"
str_Haribona = "はりぼなブログ"
str_Haribona = "はりぼなブログです"
c_str_Haribona = "はりぼなブログです"
自分が定数を使う時によくやること
最後に私が定数を使う時によくやることを紹介しておきます。ほぼ癖みたいになってますが、もし参考になれば幸いです。
プロシージャ外で宣言する
定数を使う時はプロシージャ外(Subの外側)で宣言することがほとんどです。
Option Explicit
'プロシージャ外で宣言
Const c_str_Haribona As String = "はりぼなブログ"
Sub test_Haribona()
MsgBox c_str_Haribona
End Sub
こうすることで複数プロシージャを作成しても都度宣言しなくて済むので、この方法をよく使っています。
注意点として、定数をプロシージャ外で宣言する時はプロシージャより上の方で宣言するようにしましょう。
Option Explicit
'NG例(エラーが出る)
Sub test_Haribona()
MsgBox c_str_Haribona
End Sub
Const c_str_Haribona As String = "はりぼなブログ"
プロシージャより下で宣言してその定数を使用すると「変数が定義されていません。」のエラーが出てしまうので注意してくださいね。
PrivateかPublicを付ける
定数を宣言する時にPrivateかPublicを付けて宣言することが多いです。基本はPrivateを付けて宣言しています。
Private Const c_str_Haribona As String = "はりぼなブログ"
PrivateとかPublicってなに??
となる方もいると思うので、ざっくり説明すると「他のモジュールからこの値を参照できるようにするかどうか」みたいなイメージです。
Privateを付けていれば、宣言したモジュール外から参照できなくなり、Publicが付いていれば他のモジュールからでも参照することができます。
この話題については別途投稿しようと思いますが、他のモジュールで呼び出すつもりがなければ基本的にPrivateを付けておくことをお勧めします。
まとめ
今回はよく使う定数について紹介しました。
定数を使用する時は、下記3点に注意して使用するようにしましょう!
- DimではなくConstで宣言する
- 宣言と同時に値を代入する
- 再代入できない
このブログではVBAに関する記事を不定期で投稿していますので、是非ご覧ください!
コメント