初心者のためのExcelマクロ超入門(絶対できるVBA開発)

マクロがまったくわからない人のためにエクセルマクロやVBAについてできるだけわかりやすく書いています。Twitter:@shuhhohhey

初心者のためのExcel(エクセル)マクロVBA入門-プログラミングの基礎10~オブジェクトその2

オブジェクト・プロパティ・メソッド?

前回、オブジェクトとは何か?についてざっくりとお話しました。
ポイントは・・・

  • オブジェクトとはExcelを構成するすべての物
  • オブジェクトは他のオブジェクトを持っている。(構成している)

ちょっとまだわからない。という人がいると思うのでもう少し突っ込んでお話します。

オブジェクトはマクロを組む上で必須

オブジェクトはExcelでマクロを組む時に必ず使います。なぜならマクロはExcelを自動で操作するからです。例えば「セルに値を入力する」とか「ワークシートに名前を付ける」とかですよね。Excelを操作したいので、Excelの中の「何を」操作したいのか?ということになるわけです。このExcelの中の「何か」これこそがオブジェクトです。具体的にはExcelなら「セル」とか「ワークシート」とかもちろん「ブック」そして、Excel自身ですらも「オブジェクト」です。
ここまでは前回の通りです。

オブジェクトは階層構造になっている

そして、オブジェクトは階層構造になっています。階層構造と言ったり、包括している構造
と言ったりするかもしれません。図にするとこんな感じ。


f:id:drumer2sh:20130801120421p:plain


ここでは、ざっくりと代表的なオブジェクトの構成例です。オブジェクトはこの他にもたくさんあります。Excelを構成するすべてのものですからね。ですが、すべて覚える必要はありません。これが、オブジェクトは他のオブジェクトを持っている。という意味です。

プロパティはオブジェクトの「性質」

では、前回出てきたプロパティですが、これは「性質」とか「属性」なんて言ったりします。概念的な言葉にするとまったく?ですよね。「オブジェクトに属しているもの」と言っても・・・なかなか?です。具体的に言うのが一番わかりやすいです。例えば「シートオブジェクト」のプロパティとは?

  • シートの名前(Nameプロパティ)
  • シートの列(Columnsプロパティ)
  • シートの行(Rowsプロパティ)
  • シートのセル(Cellsプロパティ)
  • シートの表示(Visibleプロパティ)

他にもシートオブジェクトに属しているものはたくさんあります。「シートのインデックス」、「シートの保護」とか色々あるわけです。これら全部を「プロパティ」と言っています。どうでしょう?これならわかりますよね。

メソッドは操作する命令のこと

さて最後にメソッドですが、これが「Excelの○○の××を操作する」の「操作する」に当たる部分です。これも例を挙げれば簡単に理解できます。

  • セルをクリアする(ClearContentsメソッド)
  • 削除する(Deleteメソッド)
  • コピーする(Copyメソッド)
  • 保存する(Saveメソッド)
  • 検索する(Findメソッド)
  • 置換する(Replaceメソッド)

などなど、「~する」ための命令文が「メソッド」です。
このオブジェクトとプロパティとメソッドの関係を図にするとこんな感じ。

f:id:drumer2sh:20130801120419p:plain


図で見るとわかりますが、同じメソッドは色々なオブジェクトに対して使えます。プロパティはオブジェクトごとにあり、既に値が設定されていたりします。

これが、オブジェクト、プロパティ、メソッドです。それぞれの関係性などよく理解してください。あとはこの関係性に沿って、Excelでやりたいこと(処理)を書いてあげればいいだけです。条件で処理を分けたかったらIf文を使えばいいし、繰り返し処理したかったらFor文やDoLoopを使えばいいのです。

はい、簡単。かなり長々と書きましたが、本質はこれだけです。正しく、コンピュータと人がどちらもわかるように、オブジェクトとプロパティとメソッドを順番に記述するだけです。これはかなり重要なのでしっかり理解してわからなければ、何度でも聞いてください。ここが理解できればもうマスターしたも同然です。

  • オブジェクト:Excelを構成するもの(部品)扱うための対象
  • プロパティ:オブジェクトの「状態を表す物」(名前とか色とか)
  • メソッド:オブジェクトを操作する(コピーする、削除する等)

以上です。

ここはとっても重要なので、もう少しいろいろと書いて行きたいと思います。

かしこ