【技術記事】最短最速で学ぶ!Excel VBA入門 – 第3回:オブジェクト –

皆さん、こんにちは、
みむすたーです。

今日は、前回に引き続き、Excel VBAの記事を書いていきます。
今日は、オブジェクトについてです。

もくじ

オブジェクトとは

多くのプログラミング言語では、オブジェクト指向という概念があり、
Excel VBAもオブジェクト指向が取り入れられています。

オブジェクトは直訳すると「物」という意味です。
オブジェクト指向では、オブジェクトは動作(method)と属性(property)のかたまりとして扱います。

よくオブジェクト指向の説明で用いられる 犬(dog) をオブジェクトとして捉える例を見てみましょう。
例えば、
犬(dog)のオブジェクトは、動作(method)として 走る(run) ことや、吠える(bark)ことができます。
また、犬(dog)のオブジェクトは、属性(property)として 犬種(kind) 、毛色(color)、性別(sex)、などの
犬ごとに異なった情報を持っていると捉えます。
オブジェクト指向では、この犬の例のように、動作と属性の2つに分けて考えます。

厳密には、犬(dog)のオブジェクトのように、
この世に存在するもののみをオブジェクトという単位で表すわけではなく、
この世に存在しない仮想的なものなどについても、オブジェクトとして扱います。

ここでは、あくまでも初心者の方のための説明としたいため、
これ以降の説明はあまりにもややこしいので、あえて省かせてください。
また機会があったときに、説明したいと思います。

とりあえず、ここでは開発者の考え方次第で、
オブジェクトはいくらでも細かく捉えることができる、
ということだけ覚えておいてください。

オブジェクトの宣言

オブジェクトを宣言するとき、Excel VBAでは、以下のような書き方をします。

Dim 変数名 As オブジェクト名

オブジェクトを保管するための変数も通常の変数と書き方は変わりません。
ただし、オブジェクトの考え方は厳密には変数と異なります。
これもまた次回以降に説明したいと思います。

オブジェクトの動作

オブジェクトに何かの動作をさせるとき、Excel VBAでは、以下のような書き方をします。

オブジェクトを保管する変数名.動作(動作内容1,動作内容2,...)

おそらく、こう書かれて一番よくわからないところが、
「動作内容1,動作内容2,…」となっている箇所だと思います。
これについては、次の引数の項目で説明します。

引数

「動作内容1,動作内容2,…」の部分をプログラミング言語では、引数と呼びます。
オブジェクトが動作を行う上で、必要な情報だと考えてください。
必要な情報の数もオブジェクトが行う動作によって異なり、
引数が必要ない場合の動作も存在します。

先ほどと同様に犬の例にしましょう。
例えば、犬の毛の色を変えるという動作(ChangeHairColor)があるとします。
そんなとき、以下のように考えます。
dog.ChangeHairColor(“gold”)
 →犬の毛の色を黄金(gold)に変える
  ※あくまでこれは例ですので、Excel VBAでこのコードを動かそうとしても、動きません。
黄金(gold)の部分は赤(red)でもいいですし、青(blue)でもいいですし、黄色(yellow)でもいいです。
指定する引数によって、動作した後の結果を選択的に変更できるという性質があります。

戻り値

オブジェクトが動作をした結果、戻り値という形で結果が返ってきます。
返ってきた戻り値を以下のように受け取ることができます。

'戻り値の変数が型名の場合
戻り値を受け取るための変数 = オブジェクトを保管する変数名.動作(動作内容1,動作内容2,...)
'戻り値の変数がオブジェクト名の場合
Set 戻り値を受け取るための変数 = オブジェクトを保管する変数名.動作(動作内容1,動作内容2,...)

オブジェクトの属性

オブジェクトに何らかの設定を行うときは、以下のような書き方になります。

オブジェクトを保管するための変数名.属性名 = 設定値

Excel VBAでのオブジェクトの使い方

Excel VBAのプログラムでは、シート、ブック、エクセルアプリなどを
オブジェクトという単位で捉えます。
まずは、シートに対して、操作を行う方法を見ていきましょう。

Sub test()
    Dim s As Worksheet
    Set s = Sheets.Add()
    s.Name = "a"
End Sub

Sheetsというオブジェクトは、シートの一覧を示すオブジェクトです。
そのオブジェクトに対して、シートを一つ追加する(add)という操作を行った後、
その戻り値を変数 s に代入しています。

Sheetsオブジェクトのaddを動作したときの戻り値のオブジェクト名は、Worksheetです。
エクセルで提供されているオブジェクトの動作後の戻り値は、Microsoftの公式ページに記載されています。
今説明した、Sheets.addの戻り値は、以下のページに書かれています。
https://docs.microsoft.com/ja-jp/office/vba/api/excel.sheets.add

扱うオブジェクト、動作は異なるため、毎回Microsoftのページを見る必要があります。
なので、毎回調べることを習慣づけてください。

最後に、s.Name = “a”の箇所でsに入っているWorkSheetオブジェクトの名前 Nameを “a”に変更しています。
WorkSheet.Nameは新しく追加したシートの名前を表しており、これを”a”に変更するプログラムとなっています。

一旦オブジェクトの説明は以上です。

コメント