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

かばくん

プログラミングをしていると聞き慣れない用語がたくさんでてきます。
オブジェクト?プロパティ??メソッド???

へびせんせい

どのプログラミング言語でもそういった用語は使われます。
完全に理解するのは難しいので、概念だけでも押さえておくと
理解が深まるかもしれません。

Point!
オブジェクト・・・ブックやシート、セルのようなVBAで操作しようとする対象(モノ)のこと
プロパティ ・・・オブジェクトが持っているパラメータや情報のこと
メソッド  ・・・オブジェクトが実行できる処理や命令のこと

これらの用語について完全に理解する必要はありません。
下図は、これらの用語をざっくり理解するために車で例えたもの。
オブジェクトを「車」だとするなら、車の色やタイヤの大きさがプロパティ、車の動作を表すことがメソッドです。
そして、VBAにはこのオブジェクトも結構な数があり、さらにオブジェクトごとにプロパティとメソッドが無数にあります。
使うときに、「その都度調べて使えれば」問題ありません!(私も全然覚えていません)

オブジェクト、プロパティ、メソッドについて概念図

オブジェクトについて

オブジェクトは、操作をする対象(モノ)でした。
よく使うのは次の3つです。

主なオブジェクト一覧
オブジェクト名 説明
Workbook ワークブックを対象とする
Worksheet ワークシートを対象とする
Range セルを対象とする

プロパティについて

プロパティはオブジェクトの性質や情報でした。
プロパティを指定するには、オブジェクトの後に、.(ドット)を書いて、プロパティ名を指定します。

オブジェクト . プロパティ名

プロパティによっては、「プロパティのプロパティ」、といったように更に細かくパラメーターを設定できます。
また、プロパティになにかの値をセットするためには、すでに決められた値を入力する必要があるものもあります。
ここでは、セルの背景色を赤に変えてみます。

Sub 背景色を変える()

  Range("A1").Interior.Color = vbRed
    
End Sub

Rangeオブジェクトでセルを指定します。
次に、Interiorプロパティで背景についての設定を呼び出します(正確にはInteriorプロパティはInteriorオブジェクトを返します)。
そして、背景の設定の中の、色のプロパティであるColorプロパティを呼び出し、設定します。
このColorプロパティには、あらかじめて決められた色の名前を指定する必要があり、その赤色が「vbRed」となってます。
このように、全部、覚えようとすると、とてもじゃないけど無理なので、「使うときにその都度、調べる」これでOKです。

プロパティやその値の書式は、無数にある
「使うときに、その都度、調べる」

メソッドについて

メソッドはオブジェクトが実行できる処理や命令でした。
メソッドもプロパティと同じで、オブジェクト名の後に、.(ドット)を書いて、メソッド名を指定します。

オブジェクト名 . メソッド名

メソッドは、オブジェクトの動作や処理を表しますが、「メソッドの対象」といったように更にパラメーターを設定できます。
これは、引数と呼ばれ、メソッドによって様々な引数をもつことができます。
ここでは、セルのコピーを行ってみます。

Sub メソッド()

  Range("A1").Value = "hello"
  Range("A1").Copy Range("B1")
    
End Sub

Rangeオブジェクトでセルを指定します。
まず、A1セルにhelloという文字列を入力してます。(実はValueもセルの値を設定するためのValueプロパティです)
そして、Copyメソッドを用いて、A1のセルをB1にコピーしています。
Copyメソッドは引数として、コピー先のセルを指定でき、Range("B1")を引数としています。(引数を必要としないメソッドもあります)
このように、メソッドもプロパティと同様、膨大な数とメソッドごとの引数まであるので、その都度調べて使えれば問題ありません。

メソッドやそのメソッドの引数は、無数にある
「使うときに、その都度、調べる」

プロパティ・メソッドについての練習問題

へびせんせい

プロパティやメソッドについては、使うときに検索すれば良いです
そのため練習問題もありません

プロパティやメソッドはWeb検索すれば、たくさんのサイトから一覧等で出てきます。
その中でも、一度、Microsoftが出しているリファレンスを見ておきましょう。
ここがオフィシャル情報になるので、掲載されていないプロパティやメソッドはないでしょう。

Microdoft Docs Officeデベロッパーセンター

- Rangeオブジェクトについて -

リンクを開く