マクロを使い始めるには
マクロとVBAの違い
こんにちは!JIMOVEの山口です。
突然ですが、マクロとVBAの意味は知らなくても、マクロは作ることができます。
マクロとVBAの違いって、実際には、
マクロ
自動的に動くプログラム
VBA
マクロを動かすためのプログラム言語
この違いなだけなので、マクロで「このように動いてほしい!」という指示を出しているのが、VBAというプログラム言語で、実際に「プログラムを組む」=「VBAを書く」ということなんです。
確かに厳密に言えば、VBAを書くというのが正しいですが、マクロを作るでもあまり変わらないので、本でもインターネットの情報でも厳密に区別して話しているものって、なかなかない気がします。
私自身としては、VBAが書けて、マクロを動かすことができ、業務の効率化が図れるのであれば、マクロでもVBAでも、どちらでも良いと思っています。
初心者の方がマクロを身につけるために必要なことは、
1.自分がやりたいことを考える
2.その内容に合ったVBAを書いてみる
3.マクロを動作させる
4.エラーが出たらデバッグ(エラー原因を追求し、改善すること)をする
とにかく、このサイクルをひたすら繰り返すことです。
とはいえ、入り口がわからなければ始めることができないため、まずはマクロの入り口へとご案内したいと思います。
まずは、VBAを書くための準備をしていきましょう。
マクロを作るための準備
開発モジュールを表示させる
マクロを作るVBAを書き始めるには、書くための場所が必要です。
その場所のことを「Visual Basic Editor(VBE)」と呼びます。
このVBEを表示させるには、Excelの通常のインストールでは表示されていない「開発」タブが必要となり、開発タブを表示させるには、「ファイル」→「オプション」→「リボンのユーザー設定」の右側の枠内に「開発」という項目があります。
通常はこの「開発」タブのチェックが外れている状態なので、こちらにチェックを入れれば、いつもの初期画面の「表示」タブの横に「開発」タブが出てきます。
VBE(Visual Basic Editor)を開く
「開発」タブを開いたら、今度は一番左にある「Visual Basic」ボタン、もしくは真ん中ほどにある「コードの表示」を押すとVBEを立ち上げることができます。
標準モジュールを追加する
コードを書くためにはコードウィンドウと呼ばれるものが必要です。
コードウィンドウは主に「シート」ごとに対応するものがありますが、そこにVBAを記載し、マクロを動かした場合、その「シートのみ」でしか動かないマクロができてしまいます。
1つのシートだけでなく、複数のシートにまたがって動作させたい場合には、「シート」のコードウィンドウではなく「標準モジュール」にあるモジュール内のコードウィンドウに記載していきます。モジュールというのは1つのページだと思っていただければいいですが、標準モジュールの中に複数作成することができます。
作成の方法は、左上の枠内(プロジェクトウィンドウと呼びます)で、右クリックをして、「挿入」→「標準モジュール」と押すと自動的に「Module1」というのが追加されていることがわかります。
これが、モジュールと呼ばれるもので、「標準モジュール」の中にある「モジュール」の「コードウィンドウ」にVBAを書くことで、1つのシートで動くマクロを作るのも、複数シートにまたがるマクロを作ることも可能になります。
VBAの書き出し方
標準モジュールを作成できれば、これでマクロを動かすためのVBAを書き始めることができます。
VBAの書き出しは、下のように、Sub〜End Subの間にプログラムを書くと決まっています。
Sub マクロ名()
プログラム
End Sub
厳密にいうと、これからあなたがVBAを習得していくにあたって、他の記載方法も出てくるかとは思いますが、始めたばかりの時には、この記述から始めるのが基本です。
マクロの名前を決める
Sub〜End Subの間にプログラムを書いていきますが、その前にマクロに名前をつけることができます。
マクロについては、もちろんのことながら、1つだけでなく、複数のマクロを作ることができます。そのため、マクロに名前をつけることで、それぞれのマクロを認識させることができます。
例えば、これからあなたが、表作成のためのマクロを作る場合、どのような名前がわかりやすいですか?
- listmake
- list_make
- 表作成
さまざまな名前をつけることができますが、自分もしくは、一緒に利用する方がわかりやすい名前をつけてあげるのが良いでしょう。
私の場合にはVBA自体が英字で記述することが多いので、半角・全角を切り替えなくてもいいように、list_makeあたりを使うことが多いです。
マクロの名前のルール
マクロの名前については、ルールがあります。
使える文字
・英字
・ひらがな
・カタカナ
・漢字
・アンダースコア(一般的にはアンダーバー「_」と呼ばれることが多いと思います)
記載の順番のルール
- 冒頭には数字、アンダースコアは書けません
- スペースを入れることはできません
- 同一モジュール内で同じ名前は使えません(標準モジュールのModule1内で同じマクロ名など)
このように利用できる文字と、記述の順番のルールがあります。
コメントの書き方
これからVBAを書くにあたって、私があなたにお勧めするのは、プログラム上に「コメントを書く」という方法です。
コメントというのは、プログラムのメモと考えており、コメントを書くことでそのプログラムがどのような内容なのか?を後から「自分が見てわかる」ようにする、「他人が見てわかる」ようにする、そうすることで、再度、修正や追加が修正となった時に実施しやすくなります。
書かなくても、マクロは問題なく、動きますが、書くことをお勧めしています。
例えば、VBAを始めたばかりのあなたが下記のプログラムを見たらどう思うでしょうか?
Sub list_make()
Columns("H:I").Delete shift:=xlToLeft
Columns("C:E").Delete shift:=xlToLeft
Columns("A").Delete shift:=xlToLeft
End Sub
なんとなく、Hとか、Iとか書いてあるし、Deleteと書いているから、列を削除するのかな・・・?というのはわかるかもしれません。
ただ、これからVBAを書いていった際には、30行、50行、100行と増えていきますので、全ての内容を覚えておくことは難しいと思います。
そこでコメントがこのように書かれていれば、いかがでしょうか。
Sub list_make()
'不要な列を削除する
Columns("H:I").Delete shift:=xlToLeft
Columns("C:E").Delete shift:=xlToLeft
Columns("A").Delete shift:=xlToLeft
End Sub
あくまで一例ではありますが、これを主要なポイントごとに、コメントを記載しておくと後から見てもわかりやすくなります。
- 不要な列を削除する
- 不要な行を削除する
- D列の◯がある行を残す
プログラムを実際に記載していくための必要なこと
マクロの流れを考える
プログラムを書くためにはいきなり書き始めることはできません。
必要なのは、今回する作業はどのようなことをしたいのか?を考えることです。そしてそれを分解し、Excelの実際の動作がどのような動きかを考えてください。
普段の作業では、今まで使い慣れた作業のため、無意識のうちに動かしていると思いますが、それを一つ一つ、頭の中でイメージするか、言葉にしてください。
私がお勧めする方法は、最初のうちはそれをコメントとして残す方法です。
例えば、不要な列を削除する、と書きましたが、「不要な列とは、どの列か?」、続いて不要な行を削除する、は「不要な行は、どの行か?」を考えるということです。
マクロの作成するために必要なことは、作業内容を考えて、そのプログラムを知って実装することです。
例えば、不要な列の削除は、A列、C〜E列、H〜I列を削除する、というコメントを書いて、これをVBAで表現するには「列ってどう表現する?」「削除ってどうする?」と考えてVBAの記載方法を探していきます。
列については「Columns」、削除するについては「Delete」というVBAを記述します。
このようにExcelの操作は多岐にわたるため、それに対応するVBAが数多く存在します。そのまま当てはめる方法もあれば、効率的に当てはめる方法もあり、VBAはかなり奥が深いです。
ここまで読んでいただいたあなたには、まずはマクロの第一歩が踏み出せたと思います。
まずはやりたい作業を考え、その作業に対応するVBAの学習を進めていきましょう。
また、この記事以外でもVBAについて記載をしているので、他のページにも遊びに来てください。
コメント