Excelマクロ(VBA)の基本的なこと
※商売の基本、商品を渡してお金を受け取る by Panasonic GH5+12-60mm
商売や運動に基本があるように、プログラミングにも基本があります。
Excelマクロ(VBA)にも基本があり、他の言語には無い特徴があったりするので、今回はマクロの基本を紹介します。
- マクロ(VBA)を今から始める方
- はじめて間もない方
知っておくとプログラミングが楽になるので、「損したくない!」方は最後までみていってください。
Excelマクロ(VBA)の基本:プログラムの流れ
マクロ(VBA)のプログラムの流れは、上から順に1行ずつ処理されていきます。
1Sub getFile()
2 ' ここが一番始め
3 ' 2番目
4 '3番目
5End Sub
例えば、上記のgetFile()というプログラム動かすと(実行)、2行目が1番始めに処理され、3行目が2番目に処理される流れです。
処理の中に、「Aに行け!」、「Bに行け!」というのはもちろんありますが、基本は上から下。
For文のようにNextがきたら、For文の中の1番はじめに戻るといったものは例外です。
また、別のSubに飛ぶ(別のプログラムを呼び出す)ことも例外になります。
Excelマクロ(VBA)の基本:ファイル・シートの指定は重要
セルに値を書き込む処理などのときには、ファイルとワークシートの指定が重要です。
ダメな例:ActiveWorkbook.Worksheets(“Sheet1”).Cells
良い例:ThisWorkbook.Worksheets(“Sheet1”).Cells
良い例:Workbokk(“Book1”).Worksheets(“Sheet1”).Cells
マクロを使っていると、Excelファイルを開いたり、閉じたりすることがあるので、ファイル・ワークシートの指定をしない場合はアクティブになっているシートに書き込まれます。
例えば
- A.xlsmでマクロ実行
- B.xlsxを開く処理があった
- A.xlsmのセルに書き込みたかった
- B.xlsmのセルに書き込まれてしまった
別のExcelファイルを開いた後に、セルに値を書き込む処理があった場合、直前に開いたExcelファイルがアクティブとなり書き込む対象になってしまいます。
ですので、セルに書き込む処理などのときはファイル・ワークシートの指定が重要になってきます。
指定してあげることで、直前に開いたファイルがなんであろうと対象としたいファイル・シートが指定になっているので問題ありません。
Excelマクロ(VBA)の基本:Cellsを使う
セルに書き込む際は、Cellsを使います。
Range(“A1”)を使うと位置の把握がしやすいので、覚えやすいかもしれません。
しかし、Rangeを使っているとセルの移動ができません。
A1、A2とすべて指定すればいいと思うかもしれませんが、セルに書き込む内容が何個あるのか把握できない場合があるのですべて指定というわけにはいかないのです。
Cells(x, y)は、xが縦軸・yが横軸となっています。
x=1のとき、Cells(x, 1)とすれば、Range(“A1”)と同じ位置になりますね。
少し理解しにくいかもしれませんが、徐々に慣れましょう。
Excelマクロ(VBA)の基本:変数のVariant型は使わない
最後は、変数のVariant型を使わないことです。
変数には型があり、数字だけを扱うもの(integer)、文字だけを扱うもの(String)など、いくつか種類があります。
マクロ以外のプログラム言語では、絶対に型をあわせておかないといけません。
しかし、マクロは特殊で、なんでも入るよ!っていう変幻自在のVariant型が存在します。
変数の型がわからない…いいや、Variant型にしちゃえ!なんていうのはやめましょう。
numは番号だから整数を入れよう、strは文字だからstringに
といったふうに必ず変数の型を理解し、あわせて使いましょう。
プログラムを正しく理解して使うために必要なことなので、最初は苦しいかもしれませんががんばりましょう!
Excel VBAを勉強するなら「できる大辞典」がおすすめです。
辞書なのでピンポイントで学ぶことができます。大学時代、2016年版を購入して勉強していましたが相当使いました。
ネットだけでも勉強はできますが、本を読みながらVBAを勉強したい方は購入してください。