目標
VBAのオブジェクト変数を理解して利用できる。
VBAのオブジェクト変数の概要と利用方法
オブジェクト変数ってなんだ?(概要)
オブジェクト変数には、「エクセルのオブジェクトへの参照(住所)」を保管できます。通常の変数の利用と異なる点は、「宣言」と「代入」をそれぞれ別のステートメント(DimとSet)で行う必要があることです。
オブジェクト変数の使い方(利用方法)
- Dimステートメントで変数を宣言する
- 変数の名前をつける
- オブジェク型(または固有オブジェクト)を指定する
- Setステートメントでオブジェクを変数に代入する
❶Dimステートメントで変数を宣言する
Dim と書けばオブジェクト変数の利用を宣言することができます。
![](https://howahowablog.com/wp-content/uploads/2024/04/整数を入れるもの-浮動少数点数型を入れるもの-文字列をいれるもの-通貨型-日付型-オブジェクト型-バリアント型修正1-1024x576.jpg)
❷変数の名前をつける
変数の名前については、名前付けにルールがありました。
- 変数名の最初の一文字目は「文字」を使用する
- スペースは利用できない(文字と文字の間を開けない)
- 長さは半角英数字で255文字まで(2文字目以降で数字とアンダースコアが利用可能)
- Excelで使用されている関数やVBAで利用されているメソッドや構文等の単語は変数名に利用できない
![](https://howahowablog.com/wp-content/uploads/2024/04/整数を入れるもの-浮動少数点数型を入れるもの-文字列をいれるもの-通貨型-日付型-オブジェクト型-バリアント型修正2-1024x576.jpg)
「データ型」
名前を指定したあとはデータ型を指定します。データ型の指定には「As」を使用します。
総称オブジェクト型と固有オブジェクト型
オブジェクト変数には二種類の参照方法(オブジェクトの指定方法)があります。
- 総称オブジェクト型…あらゆるオブジェクトを参照できる指定方法です。
- 固有オブジェクト型…特定のオブジェクトに対して参照ができる指定方法です。
![](https://howahowablog.com/wp-content/uploads/2024/04/整数を入れるもの-浮動少数点数型を入れるもの-文字列をいれるもの-通貨型-日付型-オブジェクト型-バリアント型修正3-1024x576.jpg)
オブジェクト型は宣言はDimを使用しますが、参照の代入は、変数での値の代入と違ってSetステートメントを利用して行います。(オブシェクト変数の宣言としてはここまでで終了です。)
Setステートメントで「参照を代入」
参照の代入
例えば、とあるセルへの参照を代入したい場合は、該当するセル番地を指定します。
参照ってなに?
参照は「値にアクセスする方法のひとつ」です。参照で思い出されるのは「絶対参照」や「相対参照」があると思います。似たような考え方で、オブジェクト型の変数に参照したいセルの番地を設定することで、該当するセルに対して様々な値(フォント、文字の大きさ、セルの色、表の最終行など)にアクセスできるようになります。
Setステートメント
オブジェクト型(固有オブジェクト名)へ参照したい住所を代入します。値へのアクセスは、この住所をもとに行われます。
![](https://howahowablog.com/wp-content/uploads/2024/04/整数を入れるもの-浮動少数点数型を入れるもの-文字列をいれるもの-通貨型-日付型-オブジェクト型-バリアント型修正-1024x576.jpg)
Dimステートメントで宣言し、Setステートメントで参照を代入すればオブシェクト変数を利用した処理を行うことができます。オブジェクト型の変数を扱う時はこの2つはセットとして覚えておきましょう。
サンプルプロシージャ
次のスクリプトはオブジェクトを利用して簡単なセルの操作を行っています。
Sub cltObject() 'clt:consultationの略…参照という意味
Worksheets("Sheet1").Activate
Dim sampleObject As Object
Dim sampleRange As Range
Set sampleObject = Range("B2")
Set sampleRange = Range("D2")
sampleObject.Interior.ColorIndex = 1
sampleObject.Offset(1).Select
MsgBox "オブジェクトの色を黒くして、オブジェクトを起点として、セルをひとつ下へ移動"
sampleRange.Interior.Color = vbMagenta
sampleRange.Offset(, 1).Select
MsgBox "オブジェクトの色をマゼンタにして、オブジェクトを起点として、セルをひとつ右へ移動"
Set sampleObject = Nothing
Set sampleRange = Nothing
End Sub
実行結果
オブジェクト変数を利用したひとつ目の処理
![](https://howahowablog.com/wp-content/uploads/2022/09/VBAのオブシェクト型5-1.png)
オブジェクト変数を利用したふたつ目の処理
![](https://howahowablog.com/wp-content/uploads/2022/09/VBAのオブシェクト型6.png)
今回はオブジェクト型を変数で扱う時の基本的な操作を取り上げました。大切な部分として「Dimステートメントで宣言して、Setステートメントで代入」の流れでした。
今回は以上となります。
![](https://howahowablog.com/wp-content/uploads/2022/09/EXCEL-VBA-おすすめ書籍5選-320x180.jpg)
ブックマークのすすめ
「ほわほわぶろぐ」を常に検索するのが面倒だという方はブックマークをお勧めします。ブックマークの設定は別記事にて掲載しています。
![](https://howahowablog.com/wp-content/uploads/2022/04/Google-Chrome-:ブックマー-Microsoft-Edge:お気に入り-登録・削除方法-320x180.jpg)
![](https://howahowablog.com/wp-content/uploads/2022/12/パソコン選び-320x180.jpg)