今回はオブジェクトの階層についてお話します。システムを作成する上で必要な考え方です。

 

難しくないので、軽く読み流しちゃって下さい。

オブジェクトの階層について

vba2-7-1

階層はこのようになっています。

 

例えば「A1セルに1を入れる」というのは

Range(“A1”).Value=1

このように書くことができるというのはVBA講座2-6でお話しましたね。

 

ですがこれだけですと、複数のExcelファイルを開いている場合や、シートが複数ある場合、どのA1セルなのかがわかりません。

 

その時に使用するのが階層という考え方。

 

vba2-7-1もう一度こちらを見て下さい。

ApplicationというのはExcel自体のことです。イメージとしては会社名

Workbookはブック。いわゆるExcelのファイルですね。イメージとしては部署

WorksheetはExcelのシートです。イメージとしては役職

Rangeはセルを意味します。イメージとしては名前

会社内で職員の名前を呼ぶ時ってどうします?会社名はもちろん部署も結構省略されますよね。

 

例えば…「A社のB部署に所属するC課長」の場合。「C課長」と呼ばれる事が多いかと思います。

 

なぜA社、B部署が省略されるのか?それは…

 

いちいち言わなくてもわかるからです。

 

ただ役職と名前は省略しませんよね。「Cさん」と言ったら怒られますし、「おい」「ちょっと」なんて名前すら出さずに呼んだら左遷、下手したらクビでしょう(笑)。

 

VBAもこれと同じような感じです。

 

Applicationは基本省略します。Workbookも基本は1つでシステムを作りますので、こちらも省略する事が多いです。

 

WorksheetとRangeは基本省略しません。こんな感じでイメージしていただければわかりやすいかと思います。

オブジェクトの階層~具体例~

それでは具体的にみていきましょう。

例えば…

Excelの(Application)
家計簿という名前のファイルの(Workbook)
6月というシートの(Worksheet)
A1セル(Range)
に(=)
100を入れる。(100)

これらを繋げてみると…

Application.Workbooks(“家計簿”).Worksheets(“6月”).Range(“A1”).Value = 100

こうなりますが、実際は最初の2つは省略しますので

Worksheets(“6月”).Range(“A1”).Value = 100

こう書くことが多いです。

 

ちなみにWorkbookとWorksheetに「s」が付いている理由ですが、これは「複数ある中の一つを、後に続く(””)で指定している」という感じでとらえていただければわかりやすいかと思います。

 

それではオブジェクトの階層については以上です。お疲れ様でした。

 

次回はWithステートメントについてお話します。