本記事はエクセル2019で動作確認を行ってます。

本記事はこのような疑問にお答えします。
VBAは、はじめに正しい文法を知っておくことでスムーズに学習が進みます。
この記事では
オブジェクトとは
プロパティとは
メソッドとは
が分かるようになります。
専門用語なのでむずかしそうに聞こえますが、考え方がわかれば今後の理解が速くなるのでがんばりましょうね。
また、マクロを組むうえで文法をすべて覚えることは不可能です。
基本をおさえ、疑問点がでてくればその都度ググる力をつければ問題ないです。
それでは、基本文法の最重要点を言います。
ポイント
「マクロは対象物に対して操作の指示を出す」
VBAとはこれの繰り返しになります。
少し深掘りすると、
対象物とは
「オブジェクト」といい、セル・シート・図・グラフのようなモノを指す
操作の指示とは(2種類)
「プロパティ」といい、オブジェクトの性質や特徴を表す。
「メソッド」といい、オブジェクトの動作のこと。
つまり、
オブジェクトのプロパティはセルの値であったり、オブジェクトのメソッドはシートを削除する。
のような作業をVBAを記述しながら繰り返すことになります。
くわしく見ていきましょう。
オブジェクト
オブジェクトとは、セルやシートなどのモノのことと言いましたよね。
これは階層から成り立っています。
アプリケーション>ブック(Workbook)>シート(Worksheet)>セル(Range)
の順で、下位に向かうほど範囲が狭くなります。
階層の表示の仕方は「.(ピリオド)」で区切っていきます。
たとえば、サンプルブックのSheet1シートのC1セルは、
Workbooks(“サンプル”).worksheets(“Sheet1”).Range(“C1”)
階層の後にオブジェクトの名前を(” ”)で囲ってあげましょう。
と記入します。
ここで注意が必要なのは上位の階層は省略可能です。
ただ、指定をしないと今アクティブになっているものが操作の対象になります。
たとえば、ブックAとブックBがあり、ブックAのシートを操作したいのに、ブックBがアクティブ状態だとブックBを操作してしまいます。
そのときは必ず
Worksheets(“sheet1”)⇒×
Workbooks(“ブックA”).Worksheets(“sheets1”)⇒〇
※上位の階層を指定してあげるとエクセルが認識しやすい
のように記述しましょう。
また階層最上位のアプリケーションについてはエクセル全体のことですので常に省略していると考えてOKです。
プロパティ
プロパティはオブジェクトの性質や特徴と説明しました。
性質や特徴とはセルを例にとると「値」や「フォントサイズ」や「色」などを指します。
プロパティの値の取り方
オブジェクトの性質や特徴の値をとるには、
オブジェクト.プロパティ
※オブジェクトとプロパティを「.(ピリオド)」でつなぐ
と記述します。
たとえば、
Range(“A1“).value A1セルの値
Range(“A1“).Font.Size A1セルのフォントサイズ
Range(“A1“)..Interior.ColorIndex A1セルの背景色
のように記述します。
プロパティに値を設定
プロパティは性質や特徴なので、そこに必要な値を入れていく必要があります。
プログラミングの考え方で基本なのが
注意ポイント
左辺=右辺
※左辺と右辺が同じものということではなく、左辺に右辺を代入するという考え方
なので、記述方法は以下のようになります。
オブジェクト.プロパティ=値
(例)
Range("A1”).value=100
Range(“A1“).Font.Size=12
Range(“A1“).Interior.ColorIndex=3
このように書くことで、A1のセルに100、フォントサイズが12、背景色が赤になります。
ついでにWithステートメントを覚えておきましょう!
先ほどの例でA1セルにいろいろな処理をしましたが、同じオブジェクトに処理をする場合まとめることができます。
With Range(“A1”)
- .value=100
- .Font.Size=12
- .Interior.ColorIndex=3
End with
With オブジェクト
- .プロパティ=値
- .プロパティ=値
- .プロパティ=値
End with
のように、WithとEndWithで囲むように記述して下さい。
メソッド
メソッドとはオブジェクトの動作のことです。
シートを選択する。セルの値を削除する。などはメソッドを使用します。
記入方法は
オブジェクト.メソッド
オブジェクトとメソッドを「.(ピリオド)」でつなぐ
(例)
Worksheets(“sheet1”).select
Sheet1のシートを選択する
となります。
また、メソッドにはより詳しく指示ができるメソッドも存在します。
より詳しい指示のことを引数と呼びます。
書き方は
オブジェクト.メソッド 引数
メソッドと引数の間は半角スペースを入れるようにしましょう。
コピーのメソッドを例に挙げましょう。
Worksheets(“sheet1”).copy Before:= Worksheets(“sheet1”)
とすることで、sheet1の前に新しいシートをコピーすることができます。
引数については複数指定できたりするものもあり、その都度知識を増やしてください。
まとめ
ExcelVBAの基本文法を解説しました。
まとめると、
オブジェクトとは、指示を出したい対象物
プロパティとは、オブジェクトの性質や特徴
メソッドとは、オブジェクトにどのような指示をだすか
が基本的な考え方になります。
ExcelVBAはこの考え方にどんどん肉付けし、自分の思う操作を指示していくことになります。
1度ではちょっと分からないな。という場合は何度か読み返してくださいね。
最後まで読んでいただきありがとうございました。