一連のシリーズの中でオブジェクトやプロパティは何回か登場してますがメソッドの話はあまりしていないですよね。ここで少し触れていきます。
前回は罫線を引くのと実行用のボタンの作り方を紹介しています。
罫線を書くマクロを構築して実行ボタンで線を引くところまでは出来そうですが次のデータをもらうためには最後に画面から情報を消すという作業が必要です。
値をクリアに・・・って事ですがこれって以前に少しだけ紹介しています。ほぼ一番最後のあたり。「ClearContents」の話をしています。
この「ClearContents」は名前の通りの作業をするのですがくくりとしてはメソッドの一員です。
メソッドってなんでしょうか?メソッドというのはオブジェクトに対して命令を出すワードってぐらいに思っておいてください。
セルの値を削除やコピー&ペーストって感じでしょうか。オブジェクト、プロパティ同様かなりたくさんあるので覚えなくてもよいです。使いながら覚えていくというのが良いと思っています。 以前も書きましたが「習うより慣れろ」です。
使い方は「オブジェクト.メソッド」という感じでドットの後にメソッドを置くといったかたちです。例えば「クリア」というメソッドでは以下のような使い方をします。
Range("A1").Clear Contents ’セルの内容のみクリア
Range("A1").Clear ’セルの内容と書式をクリア
Range("A1").ClearFormats ’セルの書式のみクリア
オブジェクトの直下にきてますね。単にクリアだけでもいろんなメソッドが居ます。次に「コピー&ペースト」の形式を選択して貼り付けの中から「値貼付け」を紹介します。
Range("A1").Copy
Range("B1").PasteSpecial xlPasteValues
オブジェクトの後にメソッドですね。最後に「コピー&ペーストと「カット&ペースト」です。
Range("A1").Copy Range("B1") ’A1の値をコピーしてB1に貼付け
Range("A1").Cut Range("B1") ’A1の値をカットしてB1に貼付け
上記とはちょっと違う書き方ですね。でも基本は同じでオブジェクトの直下にメソッドがきたあとにコピー先を指示しています。
プロパティに値を代入の時は「=」を使っていましたがメソッドは直接オブジェクトに対して指示を出します。
オブジェクトは属性を持つことが出来ます。この属性がプロパティです。プロパティを書き換える時には=を使って値を代入します。代わってオブジェクト自体を操作したい時はオブジェクトの直下にメソッドを書いて指示をします。
おそらく多くの人に馴染みがありそうな案件で説明してみます。
デスクトップ上にExcelデータを1つ用意してからファイルの上で右クリックをするとプロパティを見ることが出来ると思います。
見たことある画面だと思います。(一部ぼかしを入れています)ここで表示されているのがこのデータのプロパティ(属性)です。このデータが持つことが出来る自身の情報といったところでしょうか。これはWorkBookというオブジェクトがもっているプロパティ(属性)です。
同様にセルやシートも同じように属性を持っています。RangeにはValueという属性が居ます。そのValueに「=」を使って値を代入することでセルに値を表示させています。
この様にプロパティに値を代入したり書き換える時には「=」を使います。
一方でこのWorkBook自体をコピーしたい時、削除したい時があると思います。以下はBookをコピーする時の操作です。
コピーする際はプロパティを操作してないですよね。ここでの対象物はWorkBookですがこれがRangeだったりSheetだった時も同じでプロパティに対して何かをするわけではなく対象物に対して直接操作を指示したい時にはメソッドを使う事になります。コードとしては「オブジェクト.メソッド」のかたちをとります。
オブジェクトによって持っているプロパティとメソッドが違う事がより難解にしているのですが使っていくとこれはプロパティでこれはメソッドだなという事が分かるようになってきます。
VBEで「F2」を押すとオブジェクトブラウザーという画面に遷移し各オブジェクトが持っているプロパティやメソッドが分かりますが勉強初期段階では吸収しきれないと思いますのでここでは説明を省きます。
何回か読んで理解が進んだ方はこちらをご覧ください。記事の中段あたりからオブジェクトブラウザーの説明をしています。
最初はオブジェクト?プロパティ?メソッド?という状態だと思います。でもこれは当然の事です。すぐには分からないと思います。
私はコードを書いて実行して画面の動きを見ながら色々試した結果後付けで理解しました。それからオブジェクトブラウザーが読めるようになりました。
繰り返しますが勉強初期は理解出来なくても良いと思っています。コピーするときやデータを消すときは上記のように書けばデータをコピー出来たりデータを消せるって思ってまずは使ってみてください。
ふと分かる時が来ます。VBAのシリーズではないのですがExcelを勉強するにあたって本をどうやって選んだらよいのか?という事について触れた記事があります。
その時のレベルで読める本がその人にとって一番良い本ですという事を書いています。
オブジェクト、プロパティ、メソッドの話は私自身も完全に理解してすべて説明できるかといわれると理解は出来ていますが各オブジェクトが持っているプロパティ、メソッドをすべて暗記しているわけではないという状態です。
分からない時はオブジェクトブラウザーで確認したりコードを書いて動かしてみることでどんな結果になるのか確認しながら使っています。この一連の確認作業が出来るようになってくるとより理解が進むという感じでサイクルがまわってきます。
勉強初期のステージでもやれることはあります。知識が不完全で自分の中でしっくりこない時期があってもまずは前に進むことを考えましょう。
いつかは理解出来る時が来ます。ではメッセージボックスとIF文の説明に進みましょう。