こんにちは、Ryoです。
VBAで処理する際に行番号や列番号は必要な情報になってきますので情報を取得したいことも多々発生します。今回はその取得方法とエディタ画面にイミディエイトウィンドウを使って列番号を調べる方法について書いてみたいと思います。
1.サンプル概要
下の画像にあるセルB2の「列番号」、セルE7の「行番号」、そして範囲としてB10からF13を指定した際の行/列番号を表示します。
サンプルコードを実行すると、このように表示されます。
2.サンプルコード
Sub Sample1() Dim R, C, R_Num, C_Num As Long 'セルE7 行番号を取得 R_Num = Cells(7, 5).Row 'セルB2 列番号を取得 C_Num = Cells(2, 1).Column 'セルB10~F13範囲を指定 R = Range(Cells(10, 2), Cells(13, 6)).Row '又はR = Range("B10:F13").Row C = Range(Cells(10, 2), Cells(13, 6)).Column '又はR = Range("B10:F13").Column MsgBox "E7行番号=" & R_Num & vbCrLf & "B2列番号=" & C_Num & _ vbCrLf & "B10:F13範囲指定での行番号/列番号=" & R & "/" & C End Sub
行番号や列番号を取得するにはRowプロパティ(行番号)、Columnプロパティ(列番号)を使います。
オブジェクト.Row / オブジェクト.Column
このように指定しますが、オブジェクトに範囲を指定した場合は上述のサンプル概要に示した通り「範囲の左上セルの行番号や列番号」が返ってきます。
サンプルコード内はCellsを使って記述していますが、コメントにあるようにRange(セル範囲)の形でも問題ありません。
但し、VBAで処理する都合上ループ処理等を用いて変数を使うことも多いですから、個人的には出来る限りCellsを使う方が何かと都合が良いと思います。
そのCellsを使う際に面倒になってくるのは、列番号を指定する際に「ん?何個目だろ?」となって数える羽目になるのですが、BD列とかであれば数えてられませんからね。
以下の方法を使うとエディタ画面上で直ぐに調べられますからお薦めです。
◆参考・・・イミディエイトウィンドウで列番号を調べる
VBAのエディタ画面で「イミディエイト」ウィンドウが表示されていない場合は、「表示」メニュー内にある「イミディエイトウィンドウ」を選択すれば出てきます。
そのウィンドウ内に調べたいBD列の番号を表示させるには以下の様に入力します。
?Range(“BD1”).Column
入力後、Enterを押すと
56
と表示されます。
これは知っていると地味に役に立ちますので、機会あればぜひ使ってみてくださいね。
3.まとめ
オブジェクトに対し.Row(行番号)、.Column(列番号)ですので覚えやすいですね。
処理してる中で現在地を把握したり、規定の行や列に達したら別の処理に切り替える等、用途が色々ありますので使用頻度も高いと思います。範囲に関しては左上のセルの値が返りますので、その点は留意して使用すれば利用できることもありますから、機会あればご活用を!
以上、行番号/列番号を取得する方法についてでした!
今回の記事が何かの参考になれば幸いです。
Ryo