オブジェクトのこと

ここまで、プログラムの実行結果を MsgBox()で確認していました。
でも、そろそろ EXCEL のワークシートに出してもいいかなぁと思います。

そこで今回は、VBA から EXECELワークシートをいじるのに欠かせない 「オブジェクト」 について勉強してみます。

変数や定数に演算などは、言葉は難しいけど日本語になっていました。
でもオブジェクトなんて英語をそのままカタカナにした言葉は、日本語で理解しづらそうです。
ですので、小分けにして少しづつ勉強して行きたいと思います。

ワークシートに “Hello, World!”

とりあえず、ワークシートに文字を出してみましょう。

ただ、すでにデータのあるワークシートを書き換えてしまうといけなのいので、Excelで新規ファイルを作成してからVBAの開発画面を出してくださいね。

下のプログラムをVBAエディタにコピペして を押して動かしてみると、ワークシートのセルC4に”Hello, World!”が入るかと思います。

Sub hello_on_worksheet()
 Worksheets(1).Range("C4").Value = "Hello, World!"
End Sub

いかがでしたか?うまくいきましたか?

MsgBox()と何が違うのかな?


MsgBox()を使ったプログラムでは、出力する部分は次のような形でした

Call MsgBox("Hello, World!")

これは、次のような意味です。

  • (VBAに内蔵されている)MsgBox()という、引数をダイアログ(小窓)に表示する別のプログラムを呼び出している
  • 引数は「Hello, World!」という文字列です。

でも今回は、

Worksheets(1).Range("C4").Value = "Hello, World!"

途中に「=」が入っています。
これって、前回までにやった「代入」ですね。
つまり、別のプログラムを呼んでいるわけではなくて、
「Worksheets(1).Range(“C4”).Value」という箱(変数)に
「”Hello, World!”」という文字列を代入しています。

以前、変数には数値や文字列のほかに「オブジェクト」も入れられるとチラッと書いたことがあります。ここで文字列を代入した「Worksheets(1).Range(“C4”).Value 」がオブジェクト(とプロパティ)です。

オブジェクトって何?

今までにも何度か名前だけは出したことがありますね。

英語の「object」は「対象」「対象物」といった意味だそうです。
意訳すれば「それ」とか「あれ」みたいな感じでしょうか。

あれもこれもオブジェクト

パソコンを例にするとパソコンはオブジェクトです。
バラしたときにはケースもオブジェクト、中にはいっている基板もオブジェクト、基板に載っている部品もオブジェクト・・・ 種類は違ってもみんなオブジェクトなわけです。

プログラムの話をするときに出てくるオブジェクトも本質的には同じで、処理の対象であればそれはオブジェクトです。
プログラム自体もオブジェクトと言えるでしょう。

ただしプログラム上では、オブジェクトを種類分けしていて、種類ごとに特色があります。
数値や文字列と同じ様に、オブジェクトってのはデータ型の一つととらえておいても、ひとまずはOKかとおもいます。あくまで「ひとまず」ですけど。

ExcelのVBA では、オブジェクトって言葉はExcelのいろんな部品(要素)を表現するために使用されます。

例えば、「セル」や「ワークシート」や「ブック(ワークブック)」に、「グラフ」や「範囲」なんかもオブジェクトです。

VBAではほかにもいろいろなオブジェクトが定義されています。
VBA リファレンスの「オブジェクトモデル」のページを開くと、左側のメニュー枠にたくさんのオブジェクトがでてきます。
全部覚えることはできなそうですので、「必要に応じて探す」ってことだけ覚えておければいいかと思います。探し方は2段階

  1. まず、MicrosoftのVBAリファレンスのページを検索してみつける
  2. 次に、リファレンスを見て使えそうなオブジェクトを探す

オブジェクトの中にオブジェクト

VBAから扱えるオブジェクトは階層化されていて、オブジェクトの中にオブジェクトを含みます。
例えば、Excelファイルでは次のような構成になっていますね。

  • ブック(ワークブック)オブジェクトは、複数のワークシートオブジェクトを含みます。
  • ワークシートオブジェクトはさらにセルや範囲といったオブジェクトを含むことができます。

箱の中にまた箱が入っているイメージでしょうか?
学校→学年→クラスとか、会社名→部署名(部・課・係)とか、県→市→町とかの方がほうがわかりやすいかな?

オブジェクトの階層は「.」でつなぐ

「B組」だけでは学年がわからないので「3年B組」と表すように、オブジェクトを表すときには、上の階層の名前につづいて目的のオブジェクト名を書きます。

例えば、さきほどの Hello Worldであれば 1つ目のワークシートの範囲”C4″を表すために下のように書いてありました。

Worksheets(1).Range(“C4”)

まとめ

今回は、ここまでにしておきます。
EXCEL VBA であつかう、オブジェクトという聞き慣れない言葉について勉強しました。

  • (ExcelのVBAでは)オブジェクトとは、プログラムの要素やデータを表すものです。
  • VBAでは、Excelの各要素やデータはオブジェクトとして扱います。
  • オブジェクトは階層化されていて、各階層がそれぞれオブジェクトです。
  • 下の階層のオブジェクトは、上の階層から「.」でつないであらわす

次回は

オブジェクトの大きな特徴である 「プロパティ」と「メソッド」 について勉強してみます。

コメント

タイトルとURLをコピーしました