MENU

【初心者向け】Offset×条件分岐の実践例!Resizeとの併用で広がるVBAの自動化テクニック

A子さん

条件に応じてOffsetで入力・変更を行いたい
複数セルを一気に操作したい(Resize)
OffsetやResizeを応用した実務的な使い方が知りたい

結論:Offsetと条件分岐を組み合わせると、“柔軟な自動化”が実現できます!

先輩

さらにResizeと組み合わせることで、一気に複数セルを変更したり、データ範囲を動的に扱うことが可能になります。

目次

Offset×Ifで条件付き処理を実装しよう

たとえばA列に「済/未済」のフラグがあり、「未済」の場合に右隣に“対応中”と書きたい、そんな処理ができます。

Dim i As Integer
For i = 2 To 10
    If Cells(i, 1).Value = "未済" Then
        Cells(i, 1).Offset(0, 1).Value = "対応中"
    End If
Next i

実務例①:条件一致で横にデータを追加

シナリオ:商品リストで「在庫切れ」と表示されている行の右隣に、備考を記載する。

Dim i As Integer
For i = 2 To 50
    If Cells(i, 2).Value = "在庫切れ" Then
        Cells(i, 2).Offset(0, 1).Value = "至急発注"
    End If
Next i
先輩

柔軟な列操作が可能になるのがOffsetの魅力。

実務例②:空白セルを見つけたらメッセージを挿入

Dim i As Integer
For i = 2 To 20
    If Cells(i, 3).Value = "" Then
        Cells(i, 3).Offset(0, 1).Value = "入力漏れあり"
    End If
Next i
先輩

条件分岐+Offsetで“次のセルに書く”処理がスマートに!

Resizeとは?|セル範囲を拡張する命令

Resizeは、1つのセルを起点にして範囲を拡張したいときに使います。

Range("A1").Resize(2, 3).Interior.Color = RGB(200, 255, 200)
先輩

A1を起点に、縦2行・横3列の範囲(A1:C2)に色をつける

Offset×Resizeの活用パターン

例:現在のセルの右隣3列分をまとめて塗りつぶす

Dim i As Integer
For i = 2 To 6
    If Cells(i, 1).Value = "重要" Then
        Cells(i, 1).Offset(0, 1).Resize(1, 3).Interior.Color = RGB(255, 230, 230)
    End If
Next i
  • Offset(0, 1):右隣に移動
  • Resize(1, 3):高さ1行×幅3列の範囲を対象

→ 結果:右隣3列分(B~D列)を一括操作

よくあるミスと注意点

OffsetのあとにResizeをつなげると、元のセルからではなくOffsetした場所を基準に拡張される

Resizeの引数は (行数, 列数) の順なので、逆に書かないよう注意

まとめ|Offset×If×Resizeで実務効率を一気に上げよう!

テクニック内容活用例
Offset指定セルからのずらし条件に応じた書き込みや色変更
If文条件分岐入力済かどうかで処理を分ける
Resizeセル範囲の拡張複数列・複数行の一括処理
先輩

この3つを組み合わせることで、マクロは一気に“実務レベル”へと進化します。

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

コメント

コメントする

CAPTCHA


目次