
VBAはいつ勉強しはじめればいい?|VBA入門
エクセルスキルの向上に努めている方の中には「最終的にはVBAまでマスターしなければならないのか」「どれくらいエクセルを使えるようになったらVBAの学習をはじめたほうがよいのか」という疑問をお持ちの方がいらっしゃるようです。
VBAとはマイクロソフトオフィス用のプログラミング言語のことですが、このVBAの学習について書きました。
-------------------------------------------------------------------------------
サマリ
【テーマ】VBAとは何か
【コンテンツ】
1. VBAはどのタイミングで学習すべきか
2. マクロとVBAの違い
3. 最も基礎的なVBA
4. VBAを使って1行おきにセルを塗りつぶすには?
---------------
VBA(Visual Basic for Applications)はマイクロソフトオフィス用のプログラミング言語です。
エクセルスキルを向上させる過程で、VBAの習得を検討することがあるでしょう。
このとき、エクセルスキルがどのくらいに達したらVBAの学習をはじめたほうが良いのかという疑問を持っている方が少なくありません。
結論としては、私は、VBAはそれなりにエクセルができるようになってから勉強しはじめればよいと考えています。
その前提で「そうはいっても気になる。VBAがどんなものなのか知りたい。」というかたを対象に、VBAの最も初歩的な部分について説明します。
1. VBAはどのタイミングで学習すべきか
エクセルの作業を自動化したり、オフィスソフトを使ってInternet Explorerを動かしたりするときに使います。
社内で「エクセルが得意な人」と呼ばれる人はだいたいVBAを少し使えますし、そういう人は「印刷とかはVBAで自動化してしまえばすぐだから」などと声高に話す傾向があるようです。
しかしながら、適切にシートが作成してあればVBAを書かなくても印刷などすぐにできますし、世の中で「自動化」と呼ばれている作業の多くは、ショートカットキーを覚えればほぼノータイムでできることです。
さらに、VBAの基本は「エクセルにできることをプログラミングで行う」という性質のものなので、そもそもエクセルの機能について十分な知識がなければVBAを勉強しても作業はあまり効率化されません。
得意げに「VBAを使えば短時間で作業が終わる」と主張する人の作業内容を見てみると、実は標準機能として存在する作業をわざわざVBAで行っているだけだった、というようなことも珍しくありません。
このため、個人的には、エクセルのスキルアップにおいてVBAを覚えることの優先順位は極めて低いと考えています。
基本的には関数や書式、ショートカットなどを適切に使いこなせるようにするのが先決です。
VBAの勉強をはじめる時期の目安としては、マウスを一切使わずにエクセルを操作できるようになってからです。
「えっ、マウスなしでどうやって操作するの?」と思った人は、とりあえずVBAはまだ勉強しなくてもよいということです。
2. マクロとVBAの違い
マクロとVBAの違いについては、VBAの入門書や入門ページにいくと必ず最初に説明される項目です。
しかし、これを正しく理解しておくことはそれほど重要ではありません。
ひとまず、マクロ=プログラム、VBA=プログラミング言語と覚えておけば十分です。
3. 最も基礎的なVBA
まずは、マクロを使って選択しているセルを黒く塗りつぶしてみます。
日本語で書くなら「選択しているセルの、塗りつぶしの、色を、黒に、する」になります。
1つずつ対応させながら見てみましょう。
Selection ・・・ 選択しているセルの
Interior ・・・ 塗りつぶしの
セルの内部なのでInteriorです。
Color ・・・ 色を
RGB(0, 0, 0) ・・・ 黒に
RGBはRed, Green, Blueの略です。各項目を0から255で指定します。
たとえば、RGB(255, 0, 0)は赤で、RGB(0, 255, 0)は緑です。
= ・・・ する
これらをドット(. )でつなぐとコードになります。
Selection.Interior.Color = RGB(0, 0, 0)
また、VBAは「Sub Macro()」ではじめて「End Sub」で終わるというルールがあります。
これは理屈ではないので覚えましょう。
以上をまとめると、以下のようなコードになります。
シンプルではありますが、この3行で立派に動くマクロになっています。
◆エクセルで実行する
実際にエクセルで動かすときは、エクセル内のエディタ(VBエディタ)に上のコードを張り付けて実行します。
張り付ける場所が少し厄介ですので、下のとおりに操作してみてください。
1. Altキーを押しながらF11を押す(エディタを起動する)
2. Altキーを押しながらIを押す(挿入タブを開く)
3. Mを押す(標準モジュールを開く)
エディタを開けたら、上のとおりのコードを張り付けて、F5キーを押すと実行できます。
選択していたセルが黒く塗りつぶされていれば正しく実行できています。
◆行全体を塗りつぶす
「選択しているセルの、塗りつぶしの、色を、黒に、する」に、「行全体を」を加えてみましょう。
Entirerow ・・・ 行全体を
を「選択しているセルの(Selection)」の後ろに加えます。
Selection.Entirerow.Interior.Color = RGB(0, 0, 0)
これで、選択しているセルの行全体を塗りつぶすことができます。
4. VBAを使って1行おきにセルを塗りつぶすには?
上のコードも立派にマクロではあるのですが、上のようなシンプルなものでは「VBAを使ってみたい」というニーズは満たされないでしょう。
そこで、VBAでしかできないこととして「1行おきにセルを塗りつぶす」を扱います。
◆セルの指定の仕方
まずは、Selection以外のセルの指定方法を確認します。
Cells(i, j) ・・・ i行目j列目のセル
Cell()ではなくCells()であることに注意してください。
これを使うことで、少ない行数であれば1行おきに塗りつぶすことができます。
8行目までについて偶数行だけ塗りつぶすことができます。
◆拡張性を高める
セルを指定するときは、エクセルと同じように文字で指定することもできます。
このような方法をとれば、3行目の「i = 」の部分を変更するだけで、塗りつぶしを始める場所を指定できるようになります。
◆より大きな範囲のために
上の方法では処理する行数が増えると使い勝手が悪くなります。
そこで、繰り返し処理の「For ... Next」というものを使います。
For i = 1 To 10 ... Next
のように、繰り返しの開始地点にFor、終了地点にNextを書き、Forの後には変数と上下限を指定します。
このコードを日本語に書き下せば「1から10までのすべてのiについて、2×i行目全体の塗りつぶしの色を黒に変更する」というものになります。
上のようなコードを書くと、1行目~20行目のうち偶数行目が塗りつぶされます。
Cells(2 * i, 1)の部分をCells(3 * i, 1)にすれば2行おきに塗りつぶすこともできます。
まとめ
VBAに関心をもってVBAの勉強をはじめるのはよいと思いますが、エクセルのスキルアップという観点では効率的だとは言えません。
1. 仕事内容によってはVBAを使えなくても全く問題はない
2. VBAの学習よりも関数やショートカットの習得のほうが優先順位が高い
3. 適切な関数をしっかり選べて、かつ、すべてキーボードで操作できるようになったころにVBAの学習をはじめるとよい