Excel VBA

【Excel VBA】【マクロ】【Tips】基準となるセルの求め方

こんにちは!Lenocoです。本日も見てくださりありがとうございます。

今回は基準となる行と列の求め方です!

基準となるセルの求め方

例えば以下のような表で、
「IDの列で、最終行をとりたいなぁ」
「タイトル行は何列まであるんだろう?」
となったとき、どのようにして取得しますか?

表の位置は基本的に変わらないんだから、C列の最終行、6行目の最終列を取得すればいいと思うかもしれません。
ただ、1行、1列でもずれてしまったらマクロがうまく動かない・・という状況を回避するため、
表が移動してしまったときにも柔軟に対応できるコードをご紹介します。

コード

Sub Main()
    Dim r As Long
    Dim c As Long
    Dim temp1 As Long
    Dim temp2 As Long
    
    r = ThisWorkbook.ActiveSheet.Cells.Find("ID", LookIn:=xlValues, lookat:=xlWhole).Row
    c = ThisWorkbook.ActiveSheet.Cells.Find("ID", LookIn:=xlValues, lookat:=xlWhole).Column
    
    temp1 = ThisWorkbook.ActiveSheet.Cells(r, c).End(xlDown).Row
    temp2 = ThisWorkbook.ActiveSheet.Cells(r, c).End(xlToRight).Column
    
    MsgBox "最終行は" & temp1 & "行目です" _
        & "最終列は" & temp2 & "列目です"
    
End Sub

コードの説明

行列番号、最終行、最終列番号を入れる変数を宣言します。
Findメソッドを使って、「ID」という文字列をシート内で検索し、
見つかったらそのセルの行番号、列番号を保存します。
「ID」と入ったセルを基準として、最終行、最終列番号を保存します。
Msgboxで、最終行、最終列番号を表示します。

補足

注意点があります。検索する文字(今回でいう「ID」)は、
シート上に1つだけであるのが望ましいです。
複数あった場合には、1つ目の文字列がヒットし、そこから最終行、最終列を求める処理になります。

さいごに

基準となるセルを求める方法は、いくつかあると思いますが、
今回は検索(Find)を使った方法をご紹介しました。
この方法であれば、たとえ行削除や行追加などがあっても
「ID」の文字を探してそこを基準とすることができます。
ぜひ使ってみてください!

Lenoco

COMMENT

メールアドレスが公開されることはありません。 が付いている欄は必須項目です