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」を使用します。

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

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

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

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

オブジェクト型は宣言はDimを使用しますが、参照の代入は、変数での値の代入と違ってSetステートメントを利用して行います。(オブシェクト変数の宣言としてはここまでで終了です。

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

オブジェクト型は変数宣言以外に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

実行結果

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

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

今回はオブジェクト型を変数で扱う時の基本的な操作を取り上げました。大切な部分として「Dimステートメントで宣言して、Setステートメントで代入」の流れでした。

今回は以上となります。

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

ブックマークのすすめ

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

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

ExcelVBAの「Range & Valueプロパティ」| 現役エンジニア&プログラミングスクール講師

2022年9月9日
プログラミング学習 おすすめ書籍情報発信 パソコン初心者 エンジニア希望者 新人エンジニア 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 の 配列(サンプルプロシージャの利用)| 現役エンジニア&プログラミングスクール講師

2022年12月25日
プログラミング学習 おすすめ書籍情報発信 パソコン初心者 エンジニア希望者 新人エンジニア 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~Part.17)システム作成 | 現役エンジニア&プログラミングスクール講師

2024年1月19日
プログラミング学習 おすすめ書籍情報発信 パソコン初心者 エンジニア希望者 新人エンジニア 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の変数 (Part.1) 基本編 | 現役エンジニア&プログラミングスクール講師

2022年9月13日
プログラミング学習 おすすめ書籍情報発信 パソコン初心者 エンジニア希望者 新人エンジニア 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.10)【Do Loop】実用的なプログラム編 | 現役エンジニア&プログラミングスクール講師

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