今回はVBA初心者講座の第3弾
【 基本的な考え方や用語などの解説 】というお話です。
「ブックやシート」という呼び方から、「VBAとマクロの違い」など、分かりそうで分かりづらい部分について整理していきす。
それでは、本編へ行ってみましょう!!
ブックとシートって何?
まず、Excel(特にVBAでは)ブックやシートを指定することが重要になってきます。
VBAになれてくると「シートA」に「シートB」の内容を転記したり参照したりすることもあるんですね。
CSVファイルをExcelとして開いて内容を転記するなど、将来的にはブックやシートを意識して処理をするときがあります。
特に実務では、「シートA」は一般の人が入力するだけのページ・「シートB」は入力されたデータを溜めておくためのデータベース用・「シートC」は一般の人が入力結果を見るためのページなど
シートごとに内容が違う使い方をすることも多いと思います。
そこで重要なのが「ブック」と「シート」についてです。
「ブック」とは、作ったExcelファイルそのもののことを言います。
「シート」とは、「Sheet1」などExcel内で作ったシートのことを言います。
Excelを本に例えると、「よく分かるVBAの本」という本の「VBAはOffice専用のプログラミング言語だ」というページや「Subから始まるプログラミングの基礎」といったページをブックやシートと呼んでいると考えると簡単ですよ。
そこで、前回の「マンガランキングトップ5」のタイトルコードを思い出してみましょう。
「Range(“a1”) = “マンガランキングトップ5″」これがA1のセルにタイトルを入力するためのコードですね。
実はこのコードこんな風に表現することが出来ます。
「Workbooks(“初めてのVBA.xlsm”).Worksheets(“初VBA”).Range(“a1”).Value = “マンガランキングトップ5″」
すごく長くなりましたが、処理する内容は同じです。
このコードの解説をしますが、前提として
ブック名: 初めてのVBA.xlsm
シート名: 初VBA
という状態で保存していて、ブック名やシート名が正確でないとエラーが発生します。
まず、 「Workbooks(“初めてのVBA.xlsm”).Worksheets(“初VBA”).Range(“a1”)」の部分を分かりやすくすると
こんな風に本来は、ブック名やシート名を指定する必要があります。
(「 . 」は、この場合「の」という意味になります)
これは例えば、フォルダを「本棚」に例えると色々な本の中から、「目的の本とページを指定」しないと何が読みたいのか? 分からないですよね。
ただ、いちいち本の名前や見ているページを正確に指定していたら、大変なのでこの部分は省略することが出来ます。
今は、「実は省略された書き方なんだな」ということを何となく分かってもらえれば十分です。
応用的な使い方をしたい時にこの考え方が必要な場合があるので、分かっていて損は無いですよ。
オブジェクトとプロパティ・メソッドって何?
VBAでは、オブジェクトとプロパティ・メソッドという言い方があります。
最初から用語を全て覚える必要は無いので、今はそんな言葉と意味があるんだなというくらいで大丈夫です。
オブジェクト(object)は「物」・プロパティ(property)は「所有物」・メソッド(method)は「方法」といった意味があります。
VBAの場合
オブジェクト(物)とは、ブック・シート・セルなど操作ができる物のことを言います。
プロパティ (所有物)は、オブジェクトの内容を読み取ったり、書き込んだり指定などをすることを言います。
メソッド( 方法 )とは、命令することを言います。
ただし、プロパティとメソッドにはあまり違いはありません。
例えばこんな感じになります。
この場合、Rangeオブジェクトで「A1」のセルを対象にします。
Valueプロパティで「A1」のセルの内容を読み取り、メッセージボックスに表示しています。
この場合は、Rangeオブジェクトで「A1」のセルを対象にします。
Valueプロパティで「A1」のセルに「コレはテストです」と書き込んでいます。
こんな風にプロパティは書き方によって結果が変わります。
この場合は、 Rangeオブジェクトで「A1」のセルを指定、さらにRowsプロパティでA1の行(A行)を指定します。
そしてDeleteメソッドで削除しています。
こんな風に「オブジェクト.プロパティ.メソッド」といった感じで「.」を付けることで、色々な事が出来るんだな。
今は、そんな風にイメージしてもらえれば十分です。
プロパティがメソッドになったり、メソッドの書き方が違ったりすることもあるのでそこまで気にしなくてもコードは書けるようになりますが、用語も少し覚えておきましょう。
VBAとマクロの違いを知っておこう
最後にマクロの記録機能を使ってVBAとマクロ機能の差について知っておきましょう。
そもそも「マクロ」とは、操作(動作)の内容を記録する機能です。
VBAはプログラミングのことなので本来は明らかに違います。
でも、VBAとマクロの記録機能は同じものだと思われがちなんですね。
では、どうして同じ物だと思われてしまうのでしょう?
その原因は、マクロが記録した内容がVBEにコードとして記録されるからです。
では、実際にやってみましょう。
今回は、A1のセルに「初めてのマクロ記録」という文字を入力してその結果を見てみましょう。
①シートの左下隅に「○」のマークをクリック
記録が開始されます
②マクロの記録ダイアログが表示されますが、今回は何も設定せず「OK」ボタンをクリック
③A1のセルに「初めてのマクロ記録」と入力しましょう
④シートの左下隅の「□」のマークをクリック
記録を終了します
これで、操作した内容をマクロ機能が自動的にVBEに記録してくれたので、VBEの画面を見てみましょう
(記録内容はExcelのバージョによって多少違いがあります)
結果は、こんな風に「Module2」というモジュールが自動的に1つ追加されます。
新しいモジュールは「ダブルクリック」すれば開くのでエディターの内容(右側)を見てみて下さい。
「Macro1」というSubプロシージャ(Sub~EndSubまでをプロシージャと呼びます)が自動的に出来ています。
この内容をざっくり日本語で説明するとこんな感じです。
- A1セルを選択
- 選択しているセルの1行1列に「初めてのマクロ記録」と入力
- 選択しているセルの 1文字目に「ハジ」というフリガナを設定
- 選択しているセルの 8~9文字目に「キロク」というフリガナを設定
- A2のセルを選択
こんな風にマクロ記録は、操作した内容を1行ずつに分けて丁寧にコードとして記録してくれるスゴイ機能です。
但し、このコードでは無駄が多く実用的で無いことが問題です。
例えば、このコードをフリガナを無視してVBAのコードで書くとこんな感じです。
「Range(“A1”) = “初めてのマクロ記録”」
極端な話5行を1行で書くことが出来ます。
つまり、マクロ記録でコード化した内容は、動作を記録しているだけなのでコードがどうしても長くなります。
ただ、マクロ記録も使い方によっては、コードの入力を助けてくれたり勉強になったりと悪いことばかりではありません。
特に初心者や中級者の場合は、上手に使えば力強い味方になってくれます。
今は「マクロ記録=動作を記録する機能」「VBA=プログラミング」と覚えておけば十分ですね。
まとめ
今回は、ブックとシートの違い、オブジェクト・プロパティ、メソッドについて、更にVBAとマクロ記録の違いについてのお話でした。
最初なので覚えることがたくさんあって大変ですよね。
今は、なんとなくで良いので基本用語や違いについて基本を押さえておきましょう。
私も最初は、5行くらいのコードを書くのがやっとで用語なんて後で覚えていました。
VBAも書いているとだんだん慣れてきますし、用語についても少しずつ耳慣れしてくるので気軽に行きましょうね。
それでは、今回も最後まで読んでいただきありがとうございました。
それでは、また次回お会いしましょう。
ばーいばーい。
コメントを残す