「オブジェクト型の定数」的なものを設定する
オブジェクト型の定数
定数は便利な仕組みだが、オブジェクト型の定数は指定できないっぽい。
Range型の定数を定義しようとしてみる
標準モジュールの宣言セクションに、次のように書いてみる。
で、[Enter]を押してみると、
こんな風に、コンパイルエラーっぽい状態になる。ただ、エラーメッセージは出ていない。
この状態で、次のコードを実行してみる。
リスト1 標準モジュール
Public Sub testObjectTypeConstant() Debug.Print BASE_CELL.Value End Sub
すると、
ここでコンパイルエラー。
やっぱり、Range
型の定数というのは無理っぽい。
ちなみに、
Private Const Set BASE_CELL As Range = Sheet7.Range("A1")
としても駄目だった。
Propertyを使う
処理の中で基準にするセルなど、特定のRange
オブジェクトを定数みたいにしておくことができたら便利。
で、Property
を使うことを考えた。
Sheet
モジュールに次のコードを書く。
リスト2 シートモジュール
Public Property Get BASE_CELL() As Range Set BASE_CELL = Me.Range("A1") End Property
たったこれだけ。Sheet7
のBASE_CELL
プロパティにA1セルを指定。あ、Sheet7
の「7
」に深い意味はありませんよ。テスト用ブックのワークシートが増えすぎているだけのことですので。
読み取り専用なので、定数っぽく使えると思う。
使ってみる
次のコードで実行。
リスト3 標準モジュール
Public Sub testObjectTypeConstant() Debug.Print Sheet7.BASE_CELL.Value End Sub
Sheet7
は
この状態なので、当然、実行すると、
イミディエイトにこんな風に表示される。
おわりに
各シートのProperty
にすることで、各シートのモジュールにコードを書くことになるので、それぞれのシートの中で独特の役割を持ったセルやセル範囲を一括管理しやすくなると思う。