「VBAってどうやって使ったらいいの?」
エクセルに慣れてくると気になるのが「VBA」ですよね。
VBAでプログラムを書くと作業を自動化できたり、ボタン一つで処理が終わったりととても便利です。
しかし知らない人には専門用語が出てくるのでとてもとっつきずらいものでもあります。
簡単にVBAを知ることができたなら…
ここではそんな人のためにVBAの基礎知識から基本的な使い方やできること、よくある質問の回答までを詳しく解説します。
これでVBAの基礎を抑えることができますよ!
1.VBAの基礎知識を知ろう
始めにVBAとはなにか、マクロとの違いはなにかについて解説します。
1-1.VBAとは?
まずVBAとは「Visual Basic for Applications(ビジュアルベーシック・フォー・アプリケーションズ)」の略で、マイクロソフト製のMicrosoft Officeシリーズに搭載されているプログラミング言語のことです。
VBAと聞くとエクセル専用のプログラミング言語のようなイメージがありますが、ワードやパワーポイントでも使うことができます。
VBAはOfficeに付属されていて、使用の際に特別準備しなければならないものはありません。
また、利用する際にも他のプログラム言語に比べて簡単で、例えば「C言語」というプログラミング言語は、ソースコードを書いた後機械語に変換する作業等が必要になりますが、VBAは必要ありません。
そしてインターネット上や書籍でもVBAに関する解説が多くあるので、とても気軽に始めることができるプログラミング言語ということができます。
VBAを使って主に行うこととしては、「自動化」や「省力化」です。
例えば手作業で入力していたデータを自動で取り込んだり、ボタン一つで表を思い通りに加工したり、いらないデータや重複したデータを削除して集計したりと様々なことが行えます。
つまりVBAは気軽に始められて便利に使えるプログラミング言語、ということです。
1-2.マクロの違いって何?
次にマクロとVBAの違いについてです。
まずマクロとは、「あらかじめ決められた手順で制御する機能」のことで、エクセルに限った機能ではありません。
エクセル以外にもマクロは存在し、例えばアクセスにもマクロ機能があります。
そしてマクロに記述するコンピュータ言語をマクロ言語といいますが、マクロ言語のひとつが「VBA」なのです。
つまりマクロは(エクセルに限らない)機能、VBAは(エクセルに限らない)マクロ言語のひとつ、ということです。
ただし一般的にマクロがよく使われるのはエクセルです。
また、エクセルには「マクロの記録」という機能があり、これを使うとVBAの書き方が分からなくてもエクセルを操作しただけでそのソースコードを書いてくれます。
これらを「マクロ」と覚えてしまうケースがあるので、注意しましょう。
2.VBAの基本的な使い方
次にVBAの基本的な使い方をみてみましょう。
2-1.開発タブの追加
始めに次の手順でエクセルに「開発タブ」を表示させます。
(1)「ファイル」タブにある「オプション」を押す
(2)「リボンのユーザー設定」にある「開発」にチェックを入れる
これでタブに「開発」が追加されます。
2-2.VBAを書くまでの準備
次にVBAを書くまでの準備手順です。
これも簡単ですよ。
(1)「開発」タブにある「Visual Basic」を押す
(2)左のツリー上で右クリックを押し、「挿入」→「標準モジュール」を選択する
これでコードを書く器(うつわ)の準備ができました。
2-3.実際に動かしてみよう
次に実際にコードを書いて実行してみます。
セルA1に「こんにちは」という文字列を入れてみます。
次の手順で行ってください。
(1)追加されたModule1に、「Sub~End Sub」までの以下のコードを張り付ける
Range("A1").Value = "こんにちは"
End Sub
(2)画面をエクセルに戻し、「Alt」+「F8」キーを押した後「テスト」を選択して「実行」を押す
(3)完了
このように、VBAでは必ず1行目に「Sub マクロ名()」をそして最後の行に「End Sub」を入れる必要があり、これがないとエラーになります。
3.VBAでよくある質問を解説!
最後にVBAでよくある質問について解説します。
3-1.変数と配列とは?
始めに変数と配列についてです。
3-1-1.変数とは?
まず変数とは、値を収納できる入れ物のことです。
例えばBook1のSheet1はVBAで書くと「Workbook(“Book1”).Worksheets(“Sheet1”)」と書きます。
しかし毎回これを書くのはしんどいです。
そこで例えば「ws」という変数に入れることで、次からは「ws」と書くだけで「Workbook(“Book1”).Worksheets(“Sheet1”)」のことを指す、というようにできます。
その他、ループ処理を行う場合にはその実施回数のカウントに必ず変数を使いますし、後で使う数値を保持しておく場合にも変数を使います。
つまり変数は、記述を省略したり数値を格納したりするのに使われるものなのです。
そして変数は使うまでに「①宣言する」→「②入れる」作業が必要です。
宣言は「Dim x As String」や「Dim ws As Worksheet」のように変数を「Dim」と「As」で挟み、その後で「String」や「Worksheet」のようにデータの型を指定します。
例えば「Dim x As String」は「このxという変数は文字列を入れるものですよ」という意味で、「Dim ws As Worksheet」は「このwsという変数はワークシートを入れるものですよ」という意味です。
なお、変数は宣言しなくても使えるのですが、予期しない処理を行わせないためにも必ず一つ一つ宣言をしましょう。
そして変数を入れるには、「x = 10」のように書きます。これだけ見ると数学を思い出しますよね。
しかしVBAで使う「=(イコール)」は、数学のそれと同じではありません。
VBAのイコールは、「右辺を左辺に代入する」役割をしており、「x = x +1」のように書いたりもします。
つまり、イメージとしては「=」よりも「←」の方が近いのです。
3-1-2.配列とは
配列とは変数がナンバリングされて並べられた入れ物のことです。
イメージすると下のようになります。
配列yのイメージ(№1~4)
y(0) | y(1) | y(2) | y(3) |
---|---|---|---|
5 | 10 | 12 | 15 |
このように、変数には1つの値しか入れることができませんでしたが、配列には№1に「5」、№2に「10」というように複数入れることができます。
なお、変数は1からではなく0から始まることも覚えておきましょう。
配列の宣言は「Dim y(3) As Integer(整数型)」のように、使いたい数をカッコで括って行います。
そして例えばy(1)に値を入れたい場合には「y(1) = 10」、y(2)に値を入れたい場合には「y(2) = 12」などと書きます。
3-2.ユーザーフォームとは?
ユーザーフォームとは、「入力フォームを自由にデザイン・作成し、入力作業を簡便かつ統一的に行うことのできるVBAの機能」のことで、例えば次のようなものです。
例えば購入年月日の所には日付のデータしか入れられない、OS名にはあらかじめ登録しているものをリスト表示して選択させる、といった形です。
ユーザーフォームは「Visual Basic」の画面において、左のツリー上で右クリックを押し、「挿入」→「ユーザーフォーム」を選択することで挿入できます。
挿入されたユーザーフォームにツールボックスでボタン等を配置、それらを押した時などの動作をVBAで記述することで動くようになります。
ユーザーフォームの作成には根気と知識が必要ですが、一度出来上がれば後がとてもラクになるものです。
VBAについて詳しくなってきたらトライしましょう。
3-3.if文の書き方は?
最後にIF文の書き方です。
前に「マクロの記録」について説明しました。
マクロの記録はエクセル上で操作するだけでその動きをVBAコード化してくれる便利なものですが、決定的な欠点は「条件分岐ができない」所です。
例えば「セルA1が80なら合格、79以下なら不合格」というものは、「マクロの記録」ではできません。VBAで書くしかないのです。
ですからVBAでのIF文の書き方はしっかり覚える必要があります。
IF文は次のように書きます。
MsgBox "合格"
Else
MsgBox "不合格"
End If
まず条件の部分を「If」と「Then」で囲みます。条件は「セルA1が80以上か?」としています。そしてその後に真の場合の動作を書きます。例ではメッセージボックスで「合格」と表示させています。そして偽の場合の動作は「Else」の後に書きます。例では「不合格」と表示させています。
このようにIf文は、
真の場合の動作
Else
偽の場合の動作
End If
の形で書くということを覚えましょう。
なお、偽の場合には何もしないというパターンもあります。
その時には
真の場合の動作
End If
と書きましょう。
なお、End Ifを忘れてしまいがちですが、ないとエラーが起こりますので注意してください。
4.まとめ
以上エクセルのVBAについて、基本的な知識とマクロとの違い、基本操作とよくある質問について解説しました。
VBAは身に付けると大幅に作業時間を短縮できる優れたものです。
始めはマクロの記録を利用して書かれたコードをみて慣れ、コードの意味を調べることで徐々に理解していく形がスムーズかと思われますので、めげずに頑張ってください。
コメント