MENU

【初心者向け】VBAの「Set」とは?オブジェクトを正しく扱う基本ルールを解説!

この記事で解決できる3つの疑問

A子さん

変数に「Set」ってなんで使うの?
「オブジェクト型って何?」っていつも混乱しちゃう…
「Set」つけなくても動くときがあるけど、いいの?

結論:Setは「オブジェクト型の変数」に値(参照)を代入するときに必須です!

初心者が最初に混乱しがちな「Set」は、オブジェクトと呼ばれる特殊な型を扱うときにだけ必要なキーワードです。
セルやワークブックなどの「何かの集合体」を扱うとき、Setがないと正しく動作しないことがあります。

目次

変数の代入に使う「=」は2種類ある

VBAでは「=」を使って変数に値を代入しますが、代入先によって処理が異なります。

  • 値型:そのままの値を渡す
  • オブジェクト型:「参照」を渡す(=どこにあるかを教える)

例:

Dim 点数 As Integer
点数 = 90 ' 値をそのまま代入

Dim rng As Range
Set rng = Range("A1") ' セルの場所を参照として代入

「Set」が必要なオブジェクト型とは?

以下はすべてオブジェクト型の例です。これらを変数に代入するにはSetが必要です。

  • Range(セル)
  • Workbook(ブック)
  • Worksheet(シート)
  • Dictionary、Collectionなどのデータ構造

Setの使用例:RangeやWorkbookを扱うとき

Dim セル As Range
Set セル = Sheets("売上").Range("B2")

Dim ブック As Workbook
Set ブック = Workbooks("データ.xlsx")

Setを使うことで、「B2セルの場所を指す変数」や「あるブックの情報を持つ変数」が正しく使えるようになります。

Setがないとどうなる?エラーになる例

Dim セル As Range
セル = Range("A1") ' ← エラー!「Set」がないと代入できない

エラー内容:「オブジェクトが必要です」
これは、「オブジェクト型の変数にはSetを使ってください」という意味です。

値型(IntegerやString)との違いを整理しよう

Setが必要?
Integer不要点数 = 100
String不要名前 = "佐藤"
Range必要Set セル = Range("A1")
Workbook必要Set wb = Workbooks(1)

Setは「オブジェクト型=中身のある箱を指す変数」につけると覚えると良いでしょう。

まとめ:Setは「参照」を渡すおまじない!

初心者の混乱ポイントである「Set」は、中身が大きく複雑なオブジェクトを正しく扱うためのおまじないです。

  • 値型 → 普通に =
  • オブジェクト型 → Set を使って参照を渡す

覚えてしまえば簡単です。RangeやWorkbookを扱う処理を書くときは、必ず Set を意識してみてください。

関連記事リンク

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

この記事を書いた人

コメント

コメントする

目次