Rangeプロパティの引数
通常、Rangeプロパティの引数と言えば、
[親オブジェクト].Range("A1")
のように、セルの番地を指定する。
しかしながら、このやり方だと、マジックナンバー的になってしまって、不便だなあと思っていた。
セルに名前を付ける、という方法もあるのだが、あまり濫発すると、
増田さんネームド化問題
を引き起こしてしまう。
定数で指定する
そこで、まず、セルの番地を定数にぶち込んでやってみる。
リスト1 標準モジュール
Private Const CELL_INDEX As String = "A1" Public Sub testConstant() Dim Sh As Worksheet Set Sh = ActiveSheet Debug.Print Sh.Range(CELL_INDEX).Value End Sub
ご覧のとおり、定数CELL_INDEX
に、文字列A1
をぶち込んでおき、
Debug.Print Sh.Range(CELL_INDEX).Value
で、A1
セルの値(笑)をイミディエイトに表示させてみようという企て。
こんなふうに、A1
セルに値(笑)を入力しておいて、実行してみる。
おお! ちゃんと動いた!
変数で指定する
ならば、今度は、変数でやってみる。
リスト2 標準モジュール
Private Const CELL_INDEX As String = "A1" Public Sub testConstant() Dim Sh As Worksheet Set Sh = ActiveSheet Debug.Print Sh.Range(CELL_INDEX).Value Dim cellIndex As String cellIndex = "A1" Debug.Print Sh.Range(cellIndex).Value End Sub
見てのとおり、今度は、変数cellIndex
に、文字列A1
をぶち込んで、
Debug.Print Sh.Range(cellIndex).Value
で、A1
セルの値(笑)をイミディエイトに表示させようという企て。
先ほどと同じ状態で実行してみると、
なんと、あっさり動いた!
結論
Range
プロパティのインデックスは、定数や変数でも指定することができます。
おわりに
なんで、こんな簡単なことを今までやってこなかったのだろう。