はじめに
エクセルでマクロを作るときは、「マクロの記録」を使用すると便利です。
ほとんどのエクセルでの処理を自動で記録してくれて、なんども使用することができる「マクロの記録は」本当に便利なのですが、しかし、マクロの記録で作ったコードは「条件分岐」や「ループ処理」などのステートメントと呼ばれる処理等は記録されていません。
そのため、「マクロの記録」で作ったマクロには、可変性がないので、すこしの変化でエラーが生じてしまいます。
VBAで本格的なシステムを作ろうと思うとやはり、オブジェクトや変数、ステートメントといった構文を理解する必要があります。
構文といっても、身構える必要はありません。一つ一つ見ていくとそれほど難しくなく、
「こんなんがあるんだな~」と知っとくだけでも非常に便利です。
この記事では、そんなVBAの構文の勉強をしていくことを目的としています。
今回は、「オブジェクト」について勉強していきたいと思います。
オブジェクトについての勉強
VBAの構文は大きく分けると
・オブジェクト式
・ステートメント
・関数
の3種類に分けられます。
オブジェクト式には、次の2種類があります。
①オブジェクト.様子 = 値
②オブジェクト.命令 = 値
の2種類です。
①オブジェクト.様子 = 値の説明
仮に「佐藤くん」で説明します。
佐藤くんに対してのプログラムを作ろうとした場合、
佐藤くんは人間なので、服を着ているでしょう。
佐藤くんの服の色を変えてみましょう。
佐藤くんの服の色は
佐藤くんの服の色を「赤色」にしたい場合
佐藤くんをエクセルの「セル」に置き換えると、
意味は、
選択しているセルの色を赤色にせよ
です。
この場合「佐藤くん」がプログラムの対象の「オブジェクト」となり、
着ている服が「プロパティ」となります。
なので、
佐藤.年齢 = 1250
というコードはエラーとなります。
佐藤くんは人間なので、1250歳というのはあり得ないためです。
Msgbox
(Y)
年齢は変更はできませんが、調べることはできるということです。
自由に変更ができないプロパティを「読み取り専用のプロパティ」と呼びます。
②オブジェクト.命令 = 値の説明
佐藤くんが着ている服や髪の色は「プロパティ」でしたが、
佐藤くんは人間なので、走ったり、泳いだりすることができます。
例えば、
佐藤.走れ
といったコードを書くことができます。
こういった、オブジェクト(操作対象)になにかしらの動作を起こさせる命令を「メソッド」と呼びます。
「メソッド」にはその状態を指示する「引数」を設定することができます。
佐藤.走れ:= ゆっくり
といった具合です。
佐藤くんを「セル」に置き換えると
ActiveCell.Offset(1, 0).Select
のように書くことができます。
これは、アクティブセルが一つ下の行に移動せよ
という意味です。
もちろん引数にも、設定するとエラーを起こすものもあります。
佐藤.走れ:= 250㎞/時
はエラーになります。
佐藤くんは人間なので、時速250㎞では走れないからです。
プロパティを設定するときは「=」でしたが、
メソッドを設定するときは「:=」を使用します。
②オブジェクト.命令 = 値の説明は以上です。
オブジェクトの階層構造
オブジェクトの階層構造について説明していきます。
VBAのオブジェクトは階層構造となっています。
どういうことかまたもや佐藤くんで説明します。
佐藤くんとひとことに言っても、日本全国にはたくさんの佐藤くんがいます。
佐藤くんは「大阪」に住んでいます。
佐藤くんは「大阪市」に住んでいます。
住所と一緒ですね。
ブックを複数開いていたりすると、一言にセルA1と言えども、
どのブックの、どのシートのセルA1なのか分からなくなりエラーになったり、目的の処置ができなかったりする場合があります。
のVBAのコードの対象を正確に示す場合は処置したいオブジェクトのさらに上位のオブジェクトから「.」でつないでいきます。
そこで、最後には「プロパティ」か「メソッド」がくることとなります。
長いプログラムでのよく見ると、ただオブジェクトを上位から順につないで指示しているだけなのはよくあります。
なので、長いコードを見ても身構えずに、きちんとコードを読んでみましょう。
基本は
「オブジェクト」の「プロパティ」を「〇〇に変更」せよ
か
「オブジェクト」の「メソッド」を「引数」で行え
のどちらかになります。
まとめ
この記事では、そんなVBAの構文の勉強をしていくことを目的として、「オブジェクト」について勉強していきました。
オブジェクト式には、
①オブジェクト.様子
= 値
②オブジェクト.命令 = 値
の2種類があり、①をプロパティ、②をメソッドと呼んでいます。
また、オブジェクトは階層構造になっており、ブックを複数開くなどしていて、オブジェクトを正確に指示しなければならない場合は上位オブジェクトから順に「.」でつないでいきます。
オブジェクトの勉強は以上です。
0 件のコメント:
コメントを投稿