【Excelマクロ】オブジェクト変数ってどう使うの?

VBAを学んでいると、変数と同じくらいよく登場するのが「オブジェクト変数」という考え方です。

通常の変数は「数値」や「文字列」を入れるために使いますが、オブジェクト変数は「シート」や「ブック」「セル範囲」など、Excelの中の“モノ”を一時的に格納しておくための箱です。

うまく使えるようになると、コードがすっきりしてエラーも減り、実務のマクロがグンと扱いやすくなります。

オブジェクト変数の基本と書き方

オブジェクト変数は、次のような流れで使います。

Dim ws As Worksheet
Set ws = ThisWorkbook.Worksheets("集計")
ws.Range("A1").Value = "テスト"
  • Dim ws As Worksheet
     →「wsという変数に、Worksheet型(シート)を入れます」と宣言
  • Set ws = ThisWorkbook.Worksheets("集計")
     →「集計シートを、wsという箱に入れます」
  • ws.Range("A1").Value = "テスト"
     →「wsというシートのA1セルに、文字を入力」

通常の変数(数値や文字列)と違い、「Set」を使って代入する点がオブジェクト変数の特徴です。

実務での使い方とメリット

オブジェクト変数は、実務マクロの中でとてもよく使われます。次のような場面では特に便利です。

1. 同じシートやセル範囲を何度も使うとき

Dim rng As Range
Set rng = Worksheets("データ").Range("A1:A100")

If WorksheetFunction.CountBlank(rng) > 0 Then
    rng.Interior.Color = RGB(255, 255, 0)
End If

対象範囲を1行でまとめられ、処理の繰り返しがスムーズになります。

2. 処理対象を変えやすいようにしたいとき

Dim ws As Worksheet
Set ws = ActiveSheet

ws.Range("B1").Value = "完了"

シート名を固定せず、どのシートでも動くように書けます。

3. コードの読みやすさ・修正のしやすさを高めるため

長いコードをそのまま何度も書くのは、保守性(メンテナンス)を下げてしまいます。

オブジェクト変数に入れておけば、1カ所変更するだけで複数の処理に反映されるので、ミスも減ります。

まとめ

オブジェクト変数は、「Excelの中のオブジェクト(シート、セル、ブックなど)」を一時的に保持する変数です。

最初は Set の使い方に戸惑うかもしれませんが、実務での効率やコードの保守性を考えると、使わない理由はありません。

  • オブジェクト変数は、Excelの“もの”を一時的に格納するための箱
  • 宣言は Dim 変数名 As 型、代入は Set 変数名 = オブジェクト
  • 何度も使う、読みやすくしたい、保守性を高めたいときに効果的

小さな処理でもオブジェクト変数を使うクセをつけておくと、あとで複雑な処理を書いたときにとても助かります。まずは wsrng など、簡単なシート・範囲の変数から取り入れてみましょう。

コメントする

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

上部へスクロール