まだA1:C10って書いてる?変動するデータ範囲を自由に操る「Resize」の使い方

【業務効率化】VBA
スポンサーリンク

こんにちは!ぐーです。
いつもブログをご覧いただき、ありがとうございます!

「またExcelが言うことを聞いてくれない…」「マクロを組んだのに、データの行数が増えたらエラーが出た」なんて経験はありませんか?

私も新人の頃、データが増えるたびにコード内の「A1:C100」という数字を「A1:C101」に書き換えるという、虚無感たっぷりの作業をしていました。

今日はそんなときに役立つ、VBAの「Resize(リサイズ)」というプロパティについてお話しします。

これを知れば、データの量が明日1,000件になろうが10,000件になろうが、コードを一切書き直さなくて済みます。

それではいきましょう!

【業務効率化】VBAの記事を見る

Resizeってなに?

一言でいうと、「基準のセルから、指定したサイズに選択範囲を広げる(または縮める)」機能です。

例えば、マウスで「A1」セルをクリックしたまま、右下にグイッと引っ張って範囲選択する動作ありますよね? あれをVBAでやるのがResizeです。

構文は以下の通りです。

Rangeオブジェクト.Resize(行サイズ, 列サイズ)

なぜResizeが必要なの?

「A1からC10まで」と決め打ちで指定してしまうと、データが11行目に追加されたときに無視されてしまいます。

Resizeを使えば、「A1を起点にデータがある分だけ範囲を広げる」という柔軟な指示が出せるようになります。

【コピペOK】実務で使えるコード

では、実際の現場(営業事務など)でよく使うパターンを2つ紹介します。VBE(コードを書く画面)に貼り付けて試してみてください。

パターン1:見出し行(1行目)だけを除いてデータ範囲を取得したい

「タイトルはいらないから、中身だけコピーしたい」ってこと、よくありますよね。

Sub GetDataOnly()
    Dim ws As Worksheet
    Set ws = ThisWorkbook.Sheets("Sheet1") ' ※シート名は適宜変えてください
   
    ' A1セルを基準にする
    With ws.Range("A1")
        ' Resize(行数, 列数)
        ' ここでは「10行、3列」にリサイズしています
        .Resize(10, 3).Select
    End With
End Sub

これだとまだ「10行」と固定されています。これを「データがある分だけ」にするのが次のステップです。

パターン2:データ量に合わせて自動で範囲を変える(最強版)

これが書ければ、あなたはもう初心者卒業です。

Sub SelectDynamicRange()
    Dim ws As Worksheet
    Dim lastRow As Long
   
    Set ws = ThisWorkbook.Sheets("Sheet1")
   
    ' A列の最終行を取得(これがデータの件数になります)
    lastRow = ws.Cells(ws.Rows.Count, 1).End(xlUp).Row
   
    ' データがない場合は終了(エラー回避)
    If lastRow < 2 Then Exit Sub
   
    ' A2セル(見出しの下)を起点に、
    ' 「最終行 - 1(見出し分)」の行数、
    ' 「3列」分の幅にリサイズして選択
    ws.Range("A2").Resize(lastRow - 1, 3).Select
   
    ' ※Selectの代わりに .Copy すればコピーできます
    ' ws.Range("A2").Resize(lastRow - 1, 3).Copy
   
    MsgBox "範囲を選択しました! 行数: " & (lastRow - 1)
End Sub

データ範囲の自動選択ができると、社内システムからダウンロードしたCSVファイルの内容をコピーさせて、新規のExcelファイルを作成しペースト、集計など何か処理をする…といった一連の流れをマクロで自動化することができるようになります。

ポイント:引数は省略もできる

実は、Resizeの引数は省略できます。

  • .Resize(5) → 行だけ5行に変更(列幅はそのまま)
  • .Resize(, 3) → 列だけ3列に変更(行数はそのまま)

これを知っていると、コードがさらにスッキリします。

さいごに

今日はResizeについてご紹介しました。

これで、明日からデータの増減に煩わされる必要はありません。

「データ増えたの? ああ、私のコードなら勝手に対応しますよ」と心の中でドヤ顔を決めてください。

【業務効率化】VBAの記事を見る


VBAを独学で学び、業務自動化に5年以上携わってきた私が、「本当に実務で役立った!」と感じた2冊を厳選して紹介します。 もう本選びで失敗したくない方は、よければ参考にしてみてください。

この記事を書いた人
ぐー

手取り15万円の会社員でも、年間100万円以上の節約・資産管理・スキルアップで新NISAで年間360万円投資し、iDeCoもフル活用しています。日商簿記3級持っています。

このブログでは、私が実践してきた節約術やリアルな資産運用、稼ぐ力を高めるITスキルについて発信しています。

生活を豊かにしたくて、高配当株投資で年間配当金60万円をめざしています。現在は年間配当金25万円以上達成!

ゲーム・漫画・アニメなどが好きです。
一緒に資産形成をがんばりましょう!
よろしくお願いします!

ぐーをフォローする
【業務効率化】VBAITスキル
スポンサーリンク
ぐーをフォローする

コメント

タイトルとURLをコピーしました