Excel VBAでOffsetの使い方|引数の省略方法・変数でループする方法

Offsetとは、指定した行数と列数分だけ移動した範囲が取得できるプロパティです。相対的な位置指定ができるので、VBAで変数を使用すればより活用できます。

≪構文≫

オブジェクト.Offset(行方向の移動数値、列方向の移動数値)




Homeに戻る > Excel セルのTipsへ

Offsetの使い方

A1セルにカーソルがあるシートです。
A1セルにカーソルがあるシート

Offset(1,2)でA1セルから下へ1行、右へ2列移動させるVBAです。
A1セルから下へ1行、右へ2列移動させるVBA

Sub MyOffset()
    Range("A1").Offset(1, 2).Select
End Sub

実行結果です。
C2セルが選択されました。
C2セルが選択された

Offsetの引数にマイナスを使う

引数にマイナスを使ったVBAです。
引数にマイナスを使ったVBA

Sub MyOffset()
    Range("A1").Offset(-1, -2).Select
End Sub

もし移動できない場合は下のように「実行時エラー:'1004' アプリケーション定義またはオブジェクト定義のエラーです。」とエラーが発生します。
もし移動できない場合のエラー

Offsetの引数を省略する

列の引数を省略したVBAです。
列の引数を省略したVBA

Sub MyOffset()
    Range("A1").Offset(1).Select
End Sub

行の引数を省略したVBAです。
行の引数を省略したVBA

Sub MyOffset()
    Range("A1").Offset(, 2).Select
End Sub

変数でループする方法

Do~Loopのループで、Offsetの引数に変数を使用し、指定したデータを見つけるVBAです。
Offsetの引数に変数を使用し、指定したデータを見つけるVBA

・Range("C4").Offset(i)で、順に下の行のデータを調べます。

Sub MyOffset()
    Dim i As Long
    
    i = 0
    Do
        If Range("C4").Offset(i) = "DYU-16" Then
            MsgBox "項目名から" & i & "行目に見つかりました。"
            Exit Do
        ElseIf Range("C4").Offset(i) = "" Then
            MsgBox "見つかりませんでした。"
            Exit Do
        End If
        
        i = i + 1
    Loop
End Sub

見つかった場合、下のように何行目で見つかったかを表示します。
見つかった場合

Homeに戻る > Excel セルのTipsへ

■■■
このサイトの内容を利用して発生した、いかなる問題にも一切責任は負いませんのでご了承下さい
■■■
当ホームページに掲載されているあらゆる内容の無許可転載・転用を禁止します


Copyright (c) Excel-Excel ! All rights reserved