本記事ではVBAでの「Range → Cells」「Cells → Range」の変換方法について解説していきます。
「Rangeでセル指定したいけど、行数・列数しか取得できない…」という時があるので、そういうときに思い出してみてください。
また、本記事では簡単な方法だけを紹介しますので、サクッと覚えていってください。
『Range → Cells』の変換
まずはRangeオブジェクトからCellsプロパティに変換する方法です。
同じ動きをできている確認のために下のような表を作っておきます。
そして、今回は「Range(“A1”) → Cells(1,1)」で変換します。※ちなみに「Cells(行数,列数)」です。
その変換するコードが下になります。
1 2 3 4 5 6 |
Sub sample1() '「Cells(1, 1)」と同じ Debug.Print Cells(Range("A1").Row, Range("A1").Column) End Sub |
上のコードでは、行数を「Rangeオブジェクト.Row」、列数を「Rangeオブジェクト.Column」で取得しています。
セルA1の行数(Row):1行目
セルA1の列数(column):1行目
上のコードが本当にRangeオブジェクトを使ったときと同じ動きをしているか、実行して確認してみます。
セルA1に入力していた「test」がイミディエイトウィンドウに表示されているので、同じ動きをしたといえます。
『Cells → Range』の変換
次にCellsプロパティからRangeオブジェクトに変換する方法です。
ここではCellsプロパティのワークシート上の座標を求める方法になります。
下がCellsプロパティから座標を求めるコードです。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
Sub sample2() '『$A$1』に変換 Debug.Print Cells(1, 1).Address '『A1』に変換 Debug.Print Cells(1, 1).Address(False, False) '『$A1』に変換 Debug.Print Cells(1, 1).Address(False, True) '『A$1』に変換 Debug.Print Cells(1, 1).Address(True, False) '『$A$1』に変換 Debug.Print Cells(1, 1).Address(True, True) End Sub |
ここで重要になるのが「Cells.Address」の部分です。
このプロパティは”参照範囲を表す文字列型 (String) の値を返す”となっています。
なので、Cellsプロパティでセル位置を指定すると、そのセル番号が文字列として返されるということになります。
そして、上のコードを実行すると下のような結果が得られます。
コレで「Range → Cells」「Cells → Range」の変換方法は以上になります。
1位 | 2位 | 3位 |
---|---|---|
Excel VBA 脱初心者のための集中講座 | パーフェクトExcel VBA | ExcelVBA 実戦のための技術 |
初心者~中級者 | 中級者 | 初心者~中級者 |
【初心者が手に取るべき参考書】 ・「書籍+動画」で圧倒的に理解しやすい入門書になっている。 ・丁寧で詳しい解説でボリューム感がある。 | 【より深い理解をしたい方にお勧めな参考書】 ・テーマに対して丁寧な解説・適度な深さで解説されている。 ・幅広くテーマを扱っていることから、基礎知識をあらかた網羅できる。 | 【入門書と一緒に買うべき参考書】 ・1つ1つのテーマを経験豊富なエンジニア視点で解説してくれている。 ・実践的で効果的なコードの書き方が理解できる。 |
【読んでみた一言】 正直、入門書はコレ一冊でいいかも。あとは中級者用の参考書に進むべし。 | 【読んでみた一言】 深く書かれているが、少々専門的に書かれていることから、読む前に数冊の入門書を読破したほうが良い。 | 【読んでみた一言】 基礎知識を持っている人が次のレベルに達するきっかけを与えてくれる参考書である。 |
スポンサーリンク