【ExcelVBA】セルを相対参照で参照する Offsetプロパティの使い方

こんなあなたにおすすめ

・Excel VBAで最終行のセルを取得したい

・Excel VBAで最終列のセルを取得したい

Excelを使っていると、セルをオフセットしたときのセルの値を取得したいことがあります。
ここで言うオフセットは、あるセルから行と列を移動するという意味です。

今回は、あるセルからオフセットした際のセルの値を取得するOffsetプロパティの使い方について解説します。

また、オフセットしたセルの行、列を取得する方法についても少しコードを見ていきましょう。

セルの位置を取得する方法については、下記の記事で解説していますので、ご参照ください。
>>【ExcelVBA】セルの位置を取得する Row & Column

Offsetプロパティの使い方

Offsetプロパティを使うことで、指定したセルをオフセットしたセルの値を取得できます。

・特定のセルを指定する
Range(“A1”).Offset(行数, 列数)

・アクティブセルを指定する
ActiveCell.Offset(行数, 列数)

・選択セルを指定する
Selection.Offset(行数, 列数)

↓実行時のExcel

実際にコードを見ていきましょう。

特定のセルをオフセット

Sub test1()

    Dim c As Range
    Set c = Range("C3")
    
    Debug.Print (c.Offset(1, 0).Value) ' C4
    Debug.Print (c.Offset(-1, 0).Value) ' C2
    Debug.Print (c.Offset(0, 1).Value) ' D3
    Debug.Print (c.Offset(0, -1).Value) ' B3

End Sub

アクティブセルをオフセット

Sub test2()

    Dim c As Range
    Set c = ActiveCell
    
    Debug.Print (c.Offset(1, 0).Value) ' C4
    Debug.Print (c.Offset(-1, 0).Value) ' C2
    Debug.Print (c.Offset(0, 1).Value) ' D3
    Debug.Print (c.Offset(0, -1).Value) ' B3

End Sub

選択セルをオフセット

Sub test3()

    Dim c As Range
    Set c = Selection
    
    Debug.Print (c.Offset(1, 0).Value) ' C4
    Debug.Print (c.Offset(-1, 0).Value) ' C2
    Debug.Print (c.Offset(0, 1).Value) ' D3
    Debug.Print (c.Offset(0, -1).Value) ' B3

End Sub

オフセットしたセルの行、列を取得する

“C3″セルから(1, 0)オフセットしたときのセルは、”C4″セルです。

そのセルの行、位置、セルは、Row、COlumn、Addressで取得できます。

Sub test4()

    Dim c As Range
    Set c = Range("C3")
    
    Debug.Print (c.Offset(1, 0).Row)        '4
    Debug.Print (c.Offset(1, 0).Column)     '3
    Debug.Print (c.Offset(1, 0).Address)    '$C$4

End Sub

まとめ

ここまで、Offsetプロパティの使い方について解説しました。

ぜひ使ってみてください。

セルの位置を取得する方法については、下記の記事で解説していますので、ご参照ください。
>>【ExcelVBA】セルの位置を取得する Row & Column

Excelで作業効率をアップしたい方は、下記の記事もご参照ください。
>>Excelのショートカット一覧 覚えて作業効率アップ!!
>>Excelで覚えておくべき関数 作業効率アップ間違いなし

【Excelについて学びたい方】
Excel 最強の教科書[完全版]
【Excel VBAについて学びたい方】
Excel VBA 脱初心者のための集中講座
エンジニアを目指すなら、TechAcademy!
オンラインスクール受講者数No.1!

・自宅にいながらオンライン完結で勉強できる
➡スクールへの移動時間を削減するため、効率的に学習可能!

・受講生に1人ずつ現役のプロのパーソナルメンターがつく
➡分からないことがわかるまで徹底的にメンターに質問可能!

・チャットで質問すればすぐに回答が返ってくる
➡レスポンスが速いから、わからないことをその場で解決!

・オリジナルサービスやオリジナルアプリなどの開発までサポート
➡就職、転職のときに役立つポートフォリオを開発可能!

無料で体験できるので、まずはお試し
>>TechAcademyの無料体験はこちら

コメントを残す

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