「エラー ’91’」を理解するには、この「参照と値の違い」をしっかりイメージできることがカギです。
ここでは 図解(テキストベース)+例題+比喩 でやさしく説明します。
1. まずは「値型」と「参照型」
VBAの変数には大きく2種類あります。
| 種類 | 代表的な型 | 代入されるもの | 例 |
|---|---|---|---|
| 値型(Value Type) | Integer, Long, Double, String, Boolean | 値そのもの | x = 10 / msg = "Hello" |
| 参照型(Reference Type) | Object, Range, Worksheet, Workbook | “もの”への参照(ポインタ) | Set r = Range("A1") |
2. 図でイメージしてみよう(テキスト図解)
🧮 値型(たとえば数値)
変数 x
├── [10]
👉 「x は 10 という値を直接持っている」
参照型(たとえば Range)
変数 r
├── [→ A1セルへの矢印(参照)]
A1セル
├── [値: "こんにちは"]
👉 「r は A1 というセルを指している」
👉 実際の値 (“こんにちは”) はセルの中にあり、r はその場所を覚えているだけ。
3. Setを忘れるとどうなる?
Dim r As Range
r.Value = "Hello"
VB図で表すと…
変数 r
├── [?] どこも指していない(Nothing)
👉 VBAは「どのセル?」と聞いてもわからないため、
「オブジェクト変数が設定されていません(エラー91)」が出ます。
4. Set を使うと参照が設定される
Dim r As Range
Set r = Range("A1")
r.Value = "Hello"
VB図:
変数 r
├── [→ A1セル]
A1セル
├── [値: "Hello"]
👉 これで「r は A1 を指している」ので安全に操作できます。
5. 参照をコピーするとどうなる?
例:
Dim r1 As Range
Dim r2 As Range
Set r1 = Range("A1")
Set r2 = r1
r2.Value = "OK"
VB図で表すと:
r1 ─┐
├──→ A1セル
r2 ─┘
👉 r1もr2も同じセル(A1)を指している!
だから r2.Value = "OK" と書いても、r1経由で見ても同じ内容が見える。
結果:
A1セルが "OK" になる。
6. もし「値型」ならどうなる?
Dim a As Long
Dim b As Long
a = 10
b = a
b = 20
VB図:
a ─ [10]
b ─ [20] (aとは別の箱)
👉 値型は「中身をコピー」するだけなので、aとbは独立しています。
bを変えてもaには影響しません。
7. RangeをNothingにすると?
Set r = Nothing
VB図:
r ├── [× 矢印消失]
👉 「r はもうどのセルも指していない状態」に戻ります。
もしその後 r.Value = 1 とすると、またエラー91になります。
8. 練習:参照の違いを体験しよう
このマクロをそのまま貼って実行してみてください。
Sub ReferenceVsValue_Demo()
Dim r1 As Range
Dim r2 As Range
Dim a As Long
Dim b As Long
' 参照型の例
Set r1 = Range("B2")
Set r2 = r1
r1.Value = "りんご"
r2.Value = "バナナ"
' 値型の例
a = 10
b = a
b = 20
MsgBox "セルB2には → " & r1.Value & vbCrLf & _
"aの値は → " & a & vbCrLf & _
"bの値は → " & b
End Sub
VB結果:
- セルB2 → 「バナナ」
- a → 10
- b → 20
🧩 解釈:
- Range(参照型)は同じものを指しているので、どちらで変えても影響あり。
- Long(値型)は別々の値を持っているので、独立している。
9. まとめ表
| 区分 | 代表例 | 代入時の動作 | Setが必要? | 影響範囲 |
|---|---|---|---|---|
| 値型 | Long, Double, String, Boolean | 値そのものをコピー | ❌不要 | 独立 |
| 参照型 | Range, Worksheet, Object | オブジェクトの“場所”を共有 | ✅必要 | 同じ実体を共有 |
10. まとめのことば
🔸 Set は「どの“実体”を指すか」を教える合図。
🔸 エラー91 は「どこも指していない(Nothing)」ときに出る。
🔸 参照型を理解すれば、オブジェクトの扱いがグッと楽になる。

