- Home ›
- Excel VBA入門 ›
- 基本文法
変数にオブジェクトを代入する(Set文)
変数を宣言するときに Integer や String などと同じようにデータ型として Worksheet や Range などのオブジェクトを指定することができます。オブジェクトを指定して宣言した変数にはオブジェクトを代入することができますが、通常の値と異なりオブジェクトを変数に代入する場合は Set 文を使用する必要がある点に注意が必要です。ここでは Excel VBA で変数にオブジェクトを代入する方法について解説します。
(Last modified: )
オブジェクトをデータ型として変数を宣言する
変数を宣言するときに Integer
や String
などのデータ型を指定する場合は次のように記述しました。
Dim 変数名 As データ型
データ型として Integer
を指定した場合は変数に整数の値を代入することができます。同じように変数にオブジェクトを代入する場合はデータ型にオブジェクトを指定して変数を宣言します。例えば Worksheet
オブジェクトや Range
オブジェクトを代入する変数は次のように宣言することができます。
Option Explicit Sub テスト() Dim ws As Worksheet Dim r As Range End Sub
なおデータ型として Object
を指定した場合にはすべてのオブジェクトを代入することができます。( Variant
を指定した場合やデータ型の指定を省略した場合はオブジェクトを含むあらゆる値を代入できます)。
Option Explicit Sub テスト() Dim ws As Object Dim r As Object End Sub
変数にオブジェクトを代入する
変数を宣言したあとは変数に数値や文字列を代入することができました。例えば Integer
型の変数に整数を代入するには次のように記述します。
Option Explicit Sub テスト() Dim num As Integer num = 10 End Sub
同じようにオブジェクトをデータ型として宣言した変数に対してオブジェクトを代入することができますが、オブジェクトを変数に代入する場合は次のように Set
文を使用して代入する必要があります。
Set 変数名 = オブジェクト
例えば Range
オブジェクトの変数にオブジェクトを代入する場合は次のように記述します。
Option Explicit
Sub テスト()
Dim r As Range
Set r = Range("B2")
End Sub
通常のデータ型と同じように Set
文を使用せずに単に変数に =
演算子を使ってオブジェクトを代入するのは間違いです。
Option Explicit
Sub テスト()
Dim r As Range
r = Range("B2")
End Sub
このプログラムを実行すると「オブジェクト変数または With ブロック変数が設定されていません。」というエラーとなります。
変数にオブジェクトを代入する場合は注意してください。
Let文について
なお変数に整数や文字列を代入する場合は正式には Let
文を使用して代入するのですが、 Let
は省略可能なので通常は記述しません。
Let 変数名 = 値
例えば Integer
型の変数に整数を代入する場合、省略せずに記載する場合は次のように記述します。
Option Explicit Sub テスト() Dim num As Integer Let num = 20 End Sub
Let
とは異なり Set
は省略できないので、変数にオブジェクトを代入する場合は必ず Set
文を使用する必要があります。
-- --
Excel VBA で変数にオブジェクトを代入する方法について解説しました。
( Written by Tatsuo Ikura )
著者 / TATSUO IKURA
これから IT 関連の知識を学ばれる方を対象に、色々な言語でのプログラミング方法や関連する技術、開発環境構築などに関する解説サイトを運営しています。