タイトルのテキスト
タイトルのテキスト
タイトルのテキスト
タイトルのテキスト

VBAの「オブジェクト」について徹底解説【セルオブジェクト】

VBA

t f B! P L

 


はじめに

エクセルでマクロを作るときは、「マクロの記録」を使用すると便利です。

ほとんどのエクセルでの処理を自動で記録してくれて、なんども使用することができる「マクロの記録は」本当に便利なのですが、しかし、マクロの記録で作ったコードは「条件分岐」や「ループ処理」などのステートメントと呼ばれる処理等は記録されていません。

そのため、「マクロの記録」で作ったマクロには、可変性がないので、すこしの変化でエラーが生じてしまいます。

 VBAで本格的なシステムを作ろうと思うとやはり、オブジェクトや変数、ステートメントといった構文を理解する必要があります。

 構文といっても、身構える必要はありません。一つ一つ見ていくとそれほど難しくなく、

「こんなんがあるんだな~」と知っとくだけでも非常に便利です。

この記事では、そんなVBAの構文の勉強をしていくことを目的としています。

 今回は、「オブジェクト」について勉強していきたいと思います。

 

オブジェクトについての勉強

VBAの構文は大きく分けると

・オブジェクト式

・ステートメント

・関数

3種類に分けられます。

 

オブジェクト式には、次の2種類があります。

①オブジェクト.様子 =

②オブジェクト.命令 =

2種類です。

 

①オブジェクト.様子 = 値の説明 

仮に「佐藤くん」で説明します。

佐藤くんに対してのプログラムを作ろうとした場合、

佐藤くんは人間なので、服を着ているでしょう。

佐藤くんの服の色を変えてみましょう。

佐藤くんの服の色は

 佐藤.服の色

 と表すことができます。

佐藤くんの服の色を「赤色」にしたい場合

 佐藤.服の色 =

 と設定することができます。 

佐藤くんをエクセルの「セル」に置き換えると、

 ActiveCell.Interior.ColorIndex = 3

 となります。 

意味は、

選択しているセルの色を赤色にせよ

です。 

この場合「佐藤くん」がプログラムの対象の「オブジェクト」となり、

着ている服がプロパティとなります。

 プロパティにはユーザーが自由に設定できるものと、設定はできないが、調べることができるものがあります。

なので、

佐藤.年齢 = 1250

というコードはエラーとなります。

佐藤くんは人間なので、1250歳というのはあり得ないためです。

 しかし、

 Y = 佐藤.年齢

Msgbox (Y)

 とすると、佐藤くんの現在の年齢が変数Yに格納されて、メッセージボックスで表示されます。

年齢は変更はできませんが、調べることはできるということです。

自由に変更ができないプロパティを「読み取り専用のプロパティ」と呼びます

 ①オブジェクト.様子 = 値の説明は以上です。

  

②オブジェクト.命令 = 値の説明

佐藤くんが着ている服や髪の色は「プロパティ」でしたが、

佐藤くんは人間なので、走ったり、泳いだりすることができます。 

例えば、 

佐藤.走れ 

といったコードを書くことができます。 

こういった、オブジェクト(操作対象)になにかしらの動作を起こさせる命令をメソッドと呼びます。

「メソッド」にはその状態を指示する「引数」を設定することができます。 

佐藤.走れ:= ゆっくり 

といった具合です。 

佐藤くんを「セル」に置き換えると 

ActiveCell.Offset(1, 0).Select 

のように書くことができます。 

これは、アクティブセルが一つ下の行に移動せよ

という意味です。 

もちろん引数にも、設定するとエラーを起こすものもあります。 

佐藤.走れ:= 250/ 

はエラーになります。 

佐藤くんは人間なので、時速250㎞では走れないからです。 

プロパティを設定するときは「=」でしたが、

メソッドを設定するときは「:=」を使用します。 

②オブジェクト.命令 = 値の説明は以上です。

 

オブジェクトの階層構造

オブジェクトの階層構造について説明していきます。 

VBAのオブジェクトは階層構造となっています。

どういうことかまたもや佐藤くんで説明します。

佐藤くんとひとことに言っても、日本全国にはたくさんの佐藤くんがいます。 

佐藤くんは「大阪」に住んでいます。

佐藤くんは「大阪市」に住んでいます。

 そうすると、佐藤くんを正確に表すと、

 大阪府.大阪市.佐藤

 となります。

 

住所と一緒ですね。

 これをエクセルで「セルA1」を表すと

 Workbooks("大阪").Worksheets("大阪市").Range ("A1")

 となります。

   

ブックを複数開いていたりすると、一言にセルA1と言えども、

どのブックの、どのシートのセルA1なのか分からなくなりエラーになったり、目的の処置ができなかったりする場合があります。

VBAのコードの対象を正確に示す場合は処置したいオブジェクトのさらに上位のオブジェクトから「.」でつないでいきます。

そこで、最後にはプロパティ」か「メソッドがくることとなります。

 

長いプログラムでのよく見ると、ただオブジェクトを上位から順につないで指示しているだけなのはよくあります。

なので、長いコードを見ても身構えずに、きちんとコードを読んでみましょう。 

基本は

「オブジェクト」の「プロパティ」を「〇〇に変更」せよ

「オブジェクト」の「メソッド」を「引数」で行え

のどちらかになります。

 

まとめ

この記事では、そんなVBAの構文の勉強をしていくことを目的として、「オブジェクト」について勉強していきました。 

オブジェクト式には、

①オブジェクト.様子 =

②オブジェクト.命令 =

2種類があり、①をプロパティ、②をメソッドと呼んでいます。

また、オブジェクトは階層構造になっており、ブックを複数開くなどしていて、オブジェクトを正確に指示しなければならない場合は上位オブジェクトから順に「.」でつないでいきます。 

オブジェクトの勉強は以上です。 

koneka1208

koneka1208

自己紹介

自分の写真
エクセル好きの窓際会社員です。 エクセルの操作法や日々の会社で得た知見などを発信していきます。 よろしくお願いします。

ブログ アーカイブ

連絡フォーム

名前

メール *

メッセージ *

QooQ