「人間」を例に、「エクセル」と比べながら、オブジェクトとメソッド・プロパティを説明していきます。
今回は誰でもイメージしやすいように、「人間」を物のような表現で扱っています。
オブジェクトってなに?
エクセルには、ブック(ファイル)やシート、セルなどいろいろな部品(物)があります。
このような部品のことを、プログラミングの世界ではオブジェクトと呼びます。
英語っぽくて難しく感じるかもしれませんが、オブジェクトという単語を聞いたり・見たりしたら「あっ部品のことね!」と気楽に受け止めてください。
例)人間
人間の場合は、次のようなオブジェクト(部品)があります。
人間の オブジェクト(部品) |
目 |
---|---|
手 | |
足 |
VBA)エクセル
エクセルだと、次のようなオブジェクト(部品)があります。
エクセルの オブジェクト(部品) |
セル |
---|---|
シート | |
ブック(ファイルのこと) |
オブジェクトのプロパティとメソッド
オブジェクト(部品)には、プロパティとメソッドという2つの機能があります。
プロパティは「特徴」、メソッドは「動作」という意味です。このプロパティとメソッドの大きな違いは、動きがあるかorないかです。
プログラミングを始めたばかりだと、プロパティとメソッドの違いを理解するのが難しいので、比較しながら説明していきます。
例)人間の目
さっきの人間の例で説明すると、人間には「目」という部品があります。この「目」には、次のようなプロパティとメソッドがあります。
目の プロパティ(特徴) |
目の色 |
---|---|
目の大きさ | |
視力 |
目の メソッド(動作) |
目を開ける |
---|---|
目を閉じる | |
目をまばたきする |
日本語で言うと
- 「○○○の□□□」と「の」で表現する動きのないのがプロパティ(特徴)
- 「○○○を□□□」と「を」で表現する動きのあるのがメソッド(動作)
となります。
また、大事なポイントとしては、オブジェクト(部品)によって、持っているプロパティやメソッドが違うことです。
今回のオブジェクト「目」には、「視力」というプロパティがあります。でも、他のオブジェクト(手や足)にはありません。
もちろん「大きさ」など一般的な特徴であれば、他のオブジェクト(手や足)にもプロパティとしてあります。
メソッドも同様に、「目」には「閉じる」というメソッドがありますが、「足」にはありません。「足」には「曲げる」「伸ばす」などのメソッドがあります。
VBA)エクセルのセル
考え方がわかった?ところで、エクセルの場合を考えてみましょう。
さっきの例では「人間の目」という部品でプロパティとメソッドを説明しました。今度は「エクセルのセル」という部品でプロパティとメソッドをいくつかあげてみます。
セルの プロパティ(特徴) |
セルの値 |
---|---|
セルの背景色 | |
セルの文字サイズ |
セルの メソッド(動作) |
セルを追加する |
---|---|
セルを削除する | |
セルを結合する |
「人間の目」を例に考えた時と同じように、外見などの特徴がプロパティ、動きなどがある操作がメソッドとなることがわかると思います。
プロパティとメソッドの書き方
実際にプログラムでプロパティとメソッドを書く時は、日本語で「の」「を」になる部分を .(カンマ)でつなげます。
プロパティ
セルの プロパティ(特徴) |
セルの値 | Range(“A1”).Value |
---|---|---|
セルの背景(の)色 | Range(“A1”).Interior.Color | |
セルの文字(の)サイズ | Range(“A1”).Font.Size |
Rangeはセルのことなので、Range(“A1”)はセルA1になります。
日本語で「の」の部分が、プログラムでは「.(カンマ)」になっています。
メソッド
セルの メソッド(動作) |
セルを追加する | Range(“A1”).Insert |
---|---|---|
セルを削除する | Range(“A1”).Delete | |
セルを結合する | Range(“A1:B3”).Merge |
日本語で「を」の部分が、プログラムでは「.(カンマ)」になっています。
「セルを結合する」にあるRange(“A1:B3”)は、セルA1からB3という範囲でセルを指定しています。
プロパティとメソッドを実行した時の違い
オブジェクトのプロパティ・メソッドをプログラムで実行した時の大きな違いは
- プロパティは調べるだけなので、オブジェクトに影響はない
- メソッドは動作があるので、オブジェクトに影響がある
となります。
「影響がある?」とちょっとなってしまいそうなので、実際に次のようなシートで、プロパティとメソッドを扱うプログラムを書いて実行してみます。
プロパティを使ったプログラム
セルA1の値をValueプロパティで調べて、MsgBoxという命令で結果をメッセージボックスに表示してみます。
1 2 3 4 5 6 7 8 |
Sub RensyuProperty1() 'セルA1の値をメッセージボックスに表示 MsgBox Range("A1").Value End Sub |
実行後にはメッセージが表示されます。
この時、エクセルのセルには変化はありません。
メソッドを使ったプログラム
今度はメソッドを使って、セルA1にセルを追加してみます。
1 2 3 4 5 6 7 8 |
Sub RensyuMethod1() 'セルA1にセルを追加 Range("A1").Insert End Sub |
実行後、エクセルのシートには新しいセルが追加されています。
この時、エクセルには新しいセルが追加され、元々のA1セルも1つ下に移動したという変化があります。
つまり、プロパティは調べただけでセルに影響はなく、メソッドはセルに影響を与えたということがわかります。
プロパティの値を変更
ただし、プロパティも変数のように=で値をセットすることができます。変数と同じように、右側の値でプロパティの値が変更されます。
1 2 3 4 5 6 7 8 |
Sub RensyuProperty2() 'セルA1の値に「VBA超入門」をセット Range("A1").Value = "VBA超入門" End Sub |
実行後は、セルA1の値が次のように変わります。
プログラムの命令にある = は、右の値を左にセット
まとめ
- オブジェクトはエクセルのいろいろな部品のこと
- オブジェクトにはプロパティ(特徴)、メソッド(操作)の2つの機能がある
- オブジェクトによって、持っているプロパティやメソッドが違う
- プロパティ(特徴)は実行しただけでは、オブジェクトに影響を与えない
- メソッド(操作)は実行すると、オブジェクトに影響を与える