VBA再入門
エクセルの言葉を理解する(オブジェクト、プロパティ、メソッド)

マクロが覚えられないという初心者向けに理屈抜きのやさしい解説
最終更新日:2021-09-24

第12回.エクセルの言葉を理解する(オブジェクト、プロパティ、メソッド)


ExcelマクロVBAを書いて実行すると、
何やら難しい日本語らしきメッセージが表示されることがあります。


エクセルが何かを伝えようとしている訳ですが、
何を言っているのかを理解してあげなければエクセルがかわいそうです。
かわいそうと言うのはともかくとして、
エクセルが表示するエラーメッセージの言葉の意味くらいは知っておきたいところです。

VBAが表示するメッセージ

例えば以下のVBAコード、

エクセル マクロ VBAコード

これを実行(F5))すると、

エクセル マクロVBA 参考画像

上記のようなエラー表示が出ます。

エラー番号"438"、これは覚える必要がありません。
メッセージの、
オブジェクトは、このプロパティまたはメソッドをサポートしていません。

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


ほとんど日本語とは言えませんね。
オブジェクト、プロパティ、メソッド
これらの意味くらいは覚えておかないと、エクセルが何を言っているのか理解出来ません。

上記のコードでは、
valeuこれが間違いで、正しくはValueとなります。
オブジェクトは、このプロパティまたはメソッドをサポートしていません。
とは、
Range("A1")は、このvaleuをサポートしていません。
という意味になります。
では、順にオブジェクト、プロパティ、メソッドについて説明します。

オブジェクトとは

オブジェクトは、objectであり、物・物体のことです。
VBAで何か操作をしようとする対象となるものがオブシェクトです。
ブックやシート、そしてセルなどを指します。
セル(RangeやCells)はRangeオブジェクトと言います。

プロパティとは

プロパティは、propertyであり、財産・資産のことです。
オブジェクトの持つ財産・資産のことであり、オブジェクトの性質を表すデータです。
セルの持つ値や書式は全て、セルのプロパティです。
プロパティは、値の取得と、値の設定、この二つの機能があります。

メソッドとは

メソッドは、methodであり、方法、方式です。
オブジェクトに対する動作・操作を指定します。
セルを選択する、セルを削除する等です。
メソッドには、値を取得する機能もあります。

プロパティとメソッドの違い

○○○.□□□
このような記述なら、
○○○はオブジェクト□□□はプロパティまたはメソッドです。

前述のエラーは、
Range("A1").valeu = "おはよう"
これに対し、
オブジェクトは、このプロパティまたはメソッドをサポートしていません。
これはつまり、
Range("A1")はオブジェクト、valeuはプロパティまたはメソッドだとエクセルは認識しているという事です。
VBAとしては、プロパティかメソッドの区別がついていないという事です。

プロパティかメソッドの区別は特段に気にする必要はありません。
プロパティとメソッドの違いはあまりなく、主に記述方法の違いになります。
○○○.□□□ = 値
この場合の□□□はプロパティです。

メソッドには、値の設定機能はありませんので、値を入れる事は出来ません。
なので、=で値を入れていればそれはプロパティという事です。

変数 = ○○○.□□□
この□□□は、プロパティの場合もあるし、メソッドの場合もあります。
これを見た目で区別することはできません。

オブジェクトの階層(親子構造)

○○○.△△△.□□□
このような記述なら、
○○○.△△△はオブジェクト、
□□□はプロパティまたはメソッド
です。

簡単に説明すると、
親オブジェクト.子オブジェクト.プロパティまたはメソッド
という事になります。

例えるなら、ボールペンを思い浮かべてください。
ボールペンというオブジェクトには、キャップと言う子供のオブジェクトが含まれます。
ボールペンの色が何色かと考えたとき、
ボールペンのどこの色・・・と言う事の指定が必要です。
ボールペンのキャップの色
これをVBA風に書けば、
ボールペン.キャップ.色
ボールペン.キャップがオブジェクトで、色がプロパティになります。

プロパティの省略

Range("A1") = "おはよう"
Cells(1, 1) = "おはよう"


この二つは同じ意味になりますが、
どれがオブジェクト?どれがプロパティ?

Range("A1") やCells(1, 1) はオブジェクトです。
すると、
オブジェクト = 値
という事になってしまいます。

オブジェクトに値は入れられません。
といいますか、オブジェクトの何に値を入れるのか・・・
上のボールペンの例なら、
ボールペン = 赤
これでは、ボールペンのどの部分を赤にするのか・・・
ボールペン.キャップ.色 = 赤
ボールペン.インク.色 = 赤
ここまで書いて初めて他人(つまりはエクセル)に理解してもらえます。

では、先の、
Range("A1") = "おはよう"
Cells(1, 1) = "おはよう"
これはどういう事でしょうか。

これは、
Range("A1").Value = "おはよう"
Cells(1, 1).Value = "おはよう"

これらの省略形だったのです。
Valueは価値や値打ちの意味の英単語ですが、ここでは値と訳しましょう。

RangeやCellsでは、プロパティを書かないと、
.Value
が省略
されていることになります、そういう決まりになっていると理解してください。

エクセルの言葉であるVBAを日本語に翻訳する

○○○.△△△.□□□
これは、
○○○△△△□□□
または、
○○○△△△□□□する
と訳します。

前者がプロパティの訳し方、後者がメソッドの訳し方になります。
.(ピリオド)は「」か「」と訳します。
少なくとも、途中の.(ピリオド)は「」と訳します。
最後の.(ピリオド)が、
プロパティなら「」、メソッドなら「」と訳してください。

プロパティへの値の設定なら、
○○○.△△△.□□□ = ☆☆☆
→ ○○○△△△□□□☆☆☆を入れる

メソッドなら
○○○.△△△.□□□
→ ○○○△△△□□□する

最終行取得のコードを訳してみる

Cells(Rows.Count, 1).End(xlup).Row

()内を部分的にみると、

Rows.Count
これは、
Rowsオブジェクト.Countプロパティ
Rowsオブジェクトとは、シートの行を表すオブジェクトで、その件数(Count)です。
つまり、シートの行数を取得しています。

End(xiup)
これは、そのセルから指定方向にCtrl+方向キーで移動した終端セルのRangeオブジェクトになります。
上記を理解して、訳してみると、

セル(シートの行数, 1).上方向の終端セル.行

となります。
セル(シートの行数, 1).上方向の終端セル
ここまでがオブジェクトで、シートの最終行のセルから上方向の終端セルのオブジェクト
そして、そのセルの行(セルの行位置)を表すプロパティがRowという事です。

VBA用語を覚えることについて

オブジェクト、プロパティ、メソッド
これらの言葉を知らなくても、マクロVBAは書けます。
これらの言葉の詳細、深い理解は、通常は必要ありません。


もちろん、先にしっかり覚えられるなら、それに越したことはありませんが、
これらの言葉が理解しきれていなくてもVBAを書くことはできますし、とりたてて不自由はないでしょう。
とはいえ、最低限の理解はしておいた方が良いです。

エラーメッセージやネットの記事を読んだとき、
こういう事を言っているのか…くらいが理解できれば十分です。
マクロVBAを書くことを続けていれば、少しずつ自然と覚えていくはずのものです。

ExcelマクロVBA入門等の対応ページ

第8回.セルに文字を入れるとは(Range,Value)
・前回書いたVBAコード ・セル番地ついて ・= 記号について ・値はValue ・オブジェクトとは、プロパティとは ・セルに文字を入れるとは

オブジェクト式について
・オブジェクト式の書き方 ・オブジェクトは直接指定できない ・オブジェクト式の書き始めは何か ・メソッドとプロパティの違いについて ・オブジェクト式の最後に

VBAの構文|VBAエキスパート対策
・【ここでのポイント】 ・オブジェクト式 ・ステートメント ・関数(Right、Left、Mid、InStr、Now、Format、MsgBox、InputBox など) ・演算子(「+」「-」「*」「/」「^」「\」「Mod」「And」「Or」「Not」 ・モジュールとプロシージャ ・【業務改善の実務】 ・【本サイト内の関連ページ】 ・VBAエキスパート公式テキスト

VBAの省略可能な記述について
・変数の宣言 ・変数宣言のデータ型 ・Application.ScreenUpdating = True : Application.DisplayAlerts = True ・Applicationのプロパティ ・Applicationのメソッド ・Range.Value ・プロシージャーのCall ・メソッドのCall ・Let ・Next 変数 ・Step 1 ・引数が無い場合の() ・名前付き引数 ・メソッドの規定値 ・組み込み列挙 ・関数のモジュール名 ・コレクションのItem ・VBAの省略可能な記述の最後に



同じテーマ「マクロVBA再入門」の記事

第9回.関数という便利な道具(VBA関数)
第10回.ワークシートの関数を使う(WorksheetFunction)
第11回.分からない事はエクセルに聞く(マクロの記録)
第12回.エクセルの言葉を理解する(オブジェクト、プロパティ、メソッド)
第13回.セルのコピペ方法を知る(CopyとPaste、さらに)
第14回.セルの書式を設定する(NumberFormatLocal,Font,Borders,Interior)
第15回.手作業で出来なければマクロは書けない
第16回.エクセルの機能を上手に使う
第17回.セルにブック・シートを指定する(Workbooks,Worksheets,With,Set)
第18回.シートをコピー・挿入・削除する(Worksheets,Copy,Add,Delete)
第19回.ブックを開く・閉じる・保存する(Workbooks,Open,Close,Save,SaveAs)


新着記事NEW ・・・新着記事一覧を見る

構成比を合計しても100%にならないと言われた…|ツイッター出題回答 (2022-09-01)
一覧から複数条件(部分一致、範囲)に合致するデータを抽出する|ツイッター出題回答 (2022-08-30)
縦横スピルしないXLOOKUP代替(MATCH+INDEX,FILTER,CHOOSEROWS)|エクセル入門(2022-08-27)
IF関数の論理式で比較演算子を省略したCOUNT系関数を書くのは|ツイッター出題回答 (2022-08-23)
LAMBDA以降の新関数の使用例|エクセル入門(2022-08-22)
数珠順列(配置に条件付き)を全て出力する|ツイッター出題回答 (2022-08-20)
日付時刻のマイナス表示に対応する方法|ツイッター出題回答 (2022-08-17)
LAMBDA以降の新関数について|エクセル入門(2022-08-16)
条件付きの最大値と中央値("A"が2文字の条件)|ツイッター出題回答 (2022-08-14)
VBAマクロと操作対象データの分離について|ツイッター出題回答 (2022-08-11)


アクセスランキング ・・・ ランキング一覧を見る

1.最終行の取得(End,Rows.Count)|VBA入門
2.RangeとCellsの使い方|VBA入門
3.変数宣言のDimとデータ型|VBA入門
4.繰り返し処理(For Next)|VBA入門
5.セルのコピー&値の貼り付け(PasteSpecial)|VBA入門
6.Excelショートカットキー一覧|Excelリファレンス
7.並べ替え(Sort)|VBA入門
8.マクロって何?VBAって何?|VBA入門
9.Range以外の指定方法(Cells,Rows,Columns)|VBA入門
10.エクセルVBAでのシート指定方法|VBA技術解説




このサイトがお役に立ちましたら「シェア」「Bookmark」をお願いいたします。


記述には細心の注意をしたつもりですが、
間違いやご指摘がありましたら、「お問い合わせ」からお知らせいただけると幸いです。
掲載のVBAコードは動作を保証するものではなく、あくまでVBA学習のサンプルとして掲載しています。
掲載のVBAコードは自己責任でご使用ください。万一データ破損等の損害が発生しても責任は負いません。



このサイトがお役に立ちましたら「シェア」「Bookmark」をお願いいたします。
本文下部へ