01-VBA

ExcelVBAの変数 (Part.2) オブジェクト変数編 | 現役エンジニア&プログラミングスクール講師

目標

VBAのオブジェクト変数を理解して利用できる。

VBAのオブジェクト変数の概要と利用方法

オブジェクト変数の概要

オブジェクト変数は、様々なオブジェクトを参照するための変数です。通常の変数の利用と異なる点は、「宣言」と「代入」をそれぞれ別のステートメント(DimとSet)で行う必要が点です。

オブジェクト変数の利用方法

  1. Dimステートメントで変数を宣言する
  2. 変数の名前をつける
  3. オブジェク型(総称オブジェクトまたは固有オブジェクト)を指定する
  4. Setステートメントでオブジェクトを変数に設定する

❶Dimステートメントで変数を宣言する

オブジェクト変数の宣言も、通常の変数の宣言同様でDimというキーワードを利用します。

Dim:Dimステートメントです。Part.1でも同様の内容をお話していますが、このステートメントは、変数の名前と型を指定する時に利用します。Dimに続けて「変数の名前」を指定し、次に「型」を指定します。型の指定にはAsを用います。

❷変数の名前をつける

変数の名前については、名前付けにルールがありました。

  • 変数名の最初の一文字目は「文字」を使用する
  • スペースは利用できない(文字と文字の間を開けない)
  • 長さは半角英数字で255文字まで(2文字目以降で数字とアンダースコアが利用可能)
  • Excelで使用されている関数やVBAで利用されているメソッドや構文等の単語は変数名に利用できない

「データ型」

名前を指定したあとはデータ型を指定します。データ型の指定には「As」を使用しました。

総称オブジェクト型と固有オブジェクト型

オブジェクト変数には二種類の参照方法(オブジェクトの指定方法)があります。

  • 総称オブジェクト型…あらゆるオブジェクトを参照できる指定方法です。
  • 固有オブジェクト型…特定のオブジェクトに対して参照ができる指定方法です。

固有オブジェクト型は無駄な参照をしない設定なので、総称オブジェクト型よりも処理が早くなるとされています。

Setステートメントで「参照を代入」

オブジェクト型は宣言は通常の変数と同様にDimを使用しますが、参照の設定(代入)は、変数での値の設定(代入)と違い、Setステートメントを利用して行う必要があります。

Setステートメント

参照したいオブジェクトの設定(代入)で利用します。設定後はオブジェクトへのアクセスに変数名を利用できます。

参照の概要

参照は「オブジェクトや値にアクセスする方法のひとつ」です。

例えば、あるオブジェクト型の変数に参照したいセルの番地を設定すると、該当するセルの様々なプロパティ(フォント、文字の大きさ、セルの色、値など)にアクセスすることが可能になります。

参照の代入方法

任意のセルへの参照を代入したい場合は、該当するセル番地を指定します。

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

オブジェクトの使用後は無駄なメモリ使用避けるために解放します。

Set sampleObject = Nothing
Set sampleRange = Nothing

実行結果

オブジェクト変数を利用したひとつ目の処理

オブジェクト変数を利用したふたつ目の処理

このようにオブジェクト変数を設定できると、セルやワークシートのプロパティに変数名を利用してアクセスが行えるようになります。その他にも、ファイルなど、様々なオブジェクトの操作も行うことが可能になります。

今回は以上となります。

初心者も実践で通用!「VBA・VBS」おすすめ書籍5選 | 現役エンジニア&プログラミングスクール講師「VBA・VBS」初心者の方が実践業務の中でそれらを活用しt活躍できるために必要な知識を習得できる書籍を紹介しています。ページの下部には「おすすめのITスクール情報」「おすすめ求人サイト」について情報を掲載中。...

ブックマークのすすめ

「ほわほわぶろぐ」を常に検索するのが面倒だという方はブックマークをお勧めします。ブックマークの設定は別記事にて掲載しています。

「お気に入り」の登録・削除方法【Google Chrome / Microsoft Edge】「お気に入り」の登録・削除方法【Google Chrome / Microsoft Edge】について解説している記事です。削除方法も掲載しています。...
【パソコン選び】失敗しないための重要ポイント | 現役エンジニア&プログラミングスクール講師【パソコン選び】失敗しないための重要ポイントについての記事です。パソコンのタイプと購入時に検討すべき点・家電量販店で見かけるCPUの見方・購入者が必要とするメモリ容量・HDDとSSDについて・ディスプレイの種類・バッテリーの持ち時間や保証・Officeソフト・ウィルス対策ソフトについて書いています。...
RELATED POST
01-VBA

Excel VBA の イベント編(Part.1)3つのプロシージャ /引数のByVal(値渡し)とByRef(参照渡し)| 現役エンジニア&プログラミングスクール講師

2022年12月29日
プログラミング学習 おすすめ書籍情報発信 パソコン初心者 エンジニア希望者 新人エンジニア IT業界への就職・転職希望者 サポートサイト Programming learning Recommended schools Recommended books Information dissemination Computer beginners Prospective engineers New engineers Prospective job seekers in the IT industry Support site
01-VBA

Excel VBA の「オブジェクト活用」(Part.2)【セル活用編】| 現役エンジニア&プログラミングスクール講師

2022年12月15日
プログラミング学習 おすすめ書籍情報発信 パソコン初心者 エンジニア希望者 新人エンジニア IT業界への就職・転職希望者 サポートサイト Programming learning Recommended schools Recommended books Information dissemination Computer beginners Prospective engineers New engineers Prospective job seekers in the IT industry Support site
01-VBA

初めてのExcelVBA:「モジュールとプロシージャ」+マクロブックの保存方法

2022年8月6日
プログラミング学習 おすすめ書籍情報発信 パソコン初心者 エンジニア希望者 新人エンジニア IT業界への就職・転職希望者 サポートサイト Programming learning Recommended schools Recommended books Information dissemination Computer beginners Prospective engineers New engineers Prospective job seekers in the IT industry Support site
01-VBA

Excel VBA の「デバッグ」(Part.1)「自動構文チェック機能」「VBAProjectのコンパイル」「プロシージャ実行時エラー」| 現役エンジニア&プログラミングスクール講師

2022年12月14日
プログラミング学習 おすすめ書籍情報発信 パソコン初心者 エンジニア希望者 新人エンジニア IT業界への就職・転職希望者 サポートサイト Programming learning Recommended schools Recommended books Information dissemination Computer beginners Prospective engineers New engineers Prospective job seekers in the IT industry Support site
01-VBA

Excel VBA の イベント編(Part.2)Functionプロシージャ | 現役エンジニア&プログラミングスクール講師

2022年12月29日
プログラミング学習 おすすめ書籍情報発信 パソコン初心者 エンジニア希望者 新人エンジニア IT業界への就職・転職希望者 サポートサイト Programming learning Recommended schools Recommended books Information dissemination Computer beginners Prospective engineers New engineers Prospective job seekers in the IT industry Support site
01-VBA

演算子|Excel VBA (Part.3)【比較演算子】条件の発展的な利用(前編)

2022年10月27日
プログラミング学習 おすすめ書籍情報発信 パソコン初心者 エンジニア希望者 新人エンジニア IT業界への就職・転職希望者 サポートサイト Programming learning Recommended schools Recommended books Information dissemination Computer beginners Prospective engineers New engineers Prospective job seekers in the IT industry Support site