VBAとは?マクロとの違いやVBA初期導入まで

Excel
この記事は約10分で読めます。

VBA(Visual Basic for Applications)は、ExcelやWord、Accessといった、Microsoft Officeで使用するプログラミング言語です。

VBAはExcel内のデータ集計や、分析、SUMやAVERAGEなどの関数だけでは実装しきれない複雑な計算など、Excel内で使用されることが多いです。

その他、Excel VBAでは以下のようなことができます。

・他のアプリケーションからデータ抽出

・他Excelファイルのデータやファイル操作

・ブラウザからデータの取得


・メールの送信

 

 

マクロとの違い

マクロはExcelの操作を自動化するための機能です。

Excelのメニューの中に、[マクロで記録」のボタンがあります。

これは手動の操作を記録しておき、必要な時に実行して操作の自動化をします。

 

マクロの使い方

[マクロの記録]をクリックして、マクロ名を入力し、OKを押します。

セルをクリックする動作を行い、[記録終了]をクリックするとマクロの登録完了です。

記録したマクロを使うには、メニューの[マクロ]で実行したいマクロを選択して[実行]をクリックすることで利用できます。

メニューの[マクロ]をクリックし、先ほど記録した[セルをクリックする]マクロを選択し、[編集]をクリックします。

記録したマクロは、内部でプログラムコードが自動生成されます。

そのプログラムコードも、VBAで書かれています。

 

初めのころはVBAとマクロの違いがわからないこともありますが、VBAはプログラム言語、マクロは自動記録機能という違いがあります。

マクロはユーザーによる単純な操作を記録しますが、もっと複雑な操作のマクロをVBAで書くこともできます。

 

 

VBAの使い方

ExcelやWord、Access 等のOfficeがPCに入っていれば、環境の構築なしに無料でVBAを利用することができます。今回はExcelからVBAを利用する方法と、簡単なVBAの実装まで行っていきます。

 

開発メニューの表示

[開発]メニュー内に、VBAを書くエディターアプリケーション(編集ソフト)の起動ボタンがあります。

 

まだ一度もマクロやVBAを使ったことがない人は、[開発]という項目自体がメニューに表示されていないと思います。

[ファイル]メニューをクリックし、[オプション]をクリックします。

サイドメニューの[リボンのユーザー設定]をクリックします。

[リボンのユーザー設定]→[メインタブ]を選択し、[開発]チェックボックスにチェックを入れてOKをクリックします。

メニューに[開発]が追加されました。

 

VBAのエディター(Visual Basic Editor)の起動

エディターとは、文字を入力、編集、保存できるツールのことです。

先ほど追加した[開発]メニューをクリックすると、[Visual Basic]があるのでクリックします。VBAのエディターが起動します。

 

Visual Basic Editorの説明

VBAのエディターを起動するとこのようなウィンドウが表示されます。

左の[プロジェクト]エリアには、VBAを記述するファイルが表示されます。「Sheet1」をダブルクリックすると、「Sheet1」用のファイルが開きます。

Sheet1内で何か処理をしたい場合は、このSheet1用のファイルにVBAを書いていきます。

 

その他のファイルについて

1つのExcelの中には、4種類のVBAファイルを作成できます。

 

・シート用VBAファイル

・ユーザーフォーム用VBAファイル

・標準モジュール用VBAファイル

・クラスモジュール用VBAファイル

の4つです。

シート用ファイルはExcelにシートを追加すると自動的に、Microsoft Excel Objectフォルダにファイルが追加されます。

シート用ファイル意外は自分で必要なときに、[挿入]メニューから追加できます。

追加したファイルは各専用フォルダに格納されます。

 

Microsoft Excel Objectフォルダ内のファイル

シート用のVBAファイルは、Microsoft Excel Objectのフォルダ内に格納されます。Excelのシートが追加されると、自動的にVBAファイルも作成されます。

 

フォームフォルダ内のファイル

Excelにはユーザーフォーム作成機能があります。例えば、Excelでは表形式でデータを管理しますが、ユーザーに触らせたくないデータがある場合には、必要最低限の項目だけ表示させた入力フォームを作成することができます。

そのユーザーフォームとVBAファイルが、このフォームフォルダに格納されます。

ユーザーフォームのVBAファイルは右クリックで[コードの表示]をクリックすると表示されます。

 

標準モジュールフォルダ内のファイル

基本的に標準モジュール内のVBAファイル(Module1ファイル等)にコードを書いていきます。各シートの処理を標準モジュール内に書くと、どのシートの処理かわからなくなる場合もあるからです。

各シートの処理はMicrosoft Excel Objectフォルダ内、それ以外の処理や複数シートで表痛の処理がある場合は標準モジュールフォルダ内に実装すると、管理が楽になります。

 

 

クラスモジュールフォルダ内のファイル

標準モジュールフォルダと同じく、コードを見やすく管理するためのフォルダです。絶対に使わなければいけない、というわけではありません。

VBAを使いこなしてくると、自分でクラスを作成できたりします。JavaやRubyなど他のプログラミング言語ではクラスは学習必須ですが、VBAでは特に学習する必要ありません。他のプログラミング言語も挑戦したいという方は学習してみてください。

 

VBAの実装

例として、ボタンを押したらメッセージを表示する内容のコードをVBAで作成していきます。

まずはシートにボタンを設置します。

[開発]メニュー内の[挿入]から、ボタンを選択します。

フォームコントロールとActiveXコントロールのどちらにもボタンはありますが、ActiveXコントロールの中にあるボタンを選択します。

フォームコントロールは主にマクロを記録する用、ActiveXコントロールはVBAで処理を書く用、と覚えていただければよいと思います。

 

ボタンを選択すると、デザインモードに切り替わります。

この状態で適当な場所にボタンを設置します。

ボタンを右クリックし、[プロパティ]を選択します。

プロパティウィンドウが開きます。

(オブジェクト名)とCaptionを変更します。Captionはボタンに表示されるテキスト、(オブジェクト名)はVBA内でのボタン名になります。

ボタンを右クリックし、[コードの表示]を選択します。

Sheet1のVBA記述用ファイルに、ボタンクリック時に実行されるプログラムが自動生成されました。

Private Sub 実行ボタン_Click()
  ここに処理を書く
End Sub

Private Sub ~ End Subは、

「ここからここまで、実行ボタンをクリックした時に実行する内容ですよ」という囲いのような役割をします。

 

このPrivate Sub ~ End Sub 内にボタンをクリックした時に実行したい内容を書いていきます。

 

ボタンをクリックしたら、メッセージを表示するコードを入力します。

以下1行のみ追加するだけです。

Public Sub テストボタン_Click()
  MsgBox "こんにちは!"
End Sub

MsgBoxは、画面にメッセージを表示する関数です。

MsgBox 関数 – Microsoft サポート

 

メッセージを表示させるためには、MsgBoxの後にメッセージを入力します。

VBAの中では、文字や文章は “”(ダブルクォーテーション)で囲んで入力する決まりがあります。

MsgBox "(表示させたいメッセージをここに入力)"

 

 

ここで一度保存しておきます。[ファイル]メニューから保存でも、Ctrl+Sのショートカットからでも保存可能です。

 

以下のようにマクロ無しのファイルとして保存するかどうかのメッセージが出てくるので、

「いいえ」をクリックします。

ファイルの種類は、「Excelマクロ有効ブック(*.xlsm)」を選択して保存します。

一度マクロ有効ブックで保存すれば、次回以降この作業は不要です。

いつも通りExcelファイルを保存するように、上書き保存でOKです。

 

作成したボタンクリックマクロを実行します。先ほどボタン設置した時にデザインモードに切り替わったので、クリックしてデザインモードを解除します。

デザインモードを解除したらボタンを押せるようになるので、作成したボタンをクリックします。

メッセージが表示されました。OKをクリックして画面を閉じます。

 

ブレークポイントの設定

VBAのコードが長くなると、プログラムの実行の途中でストップしたいことがあります。使う場面としては、エラーが発生した際に、どの部分でエラーが発生しているかを確認するときなどです。

設定方法は、行の左端(茶色丸のところ)をクリックするだけです。設定されたところは、行の背景色が変化します。

この状態で、Excelの実行ボタンをクリックします。

通常であればメッセージが表示されるのですが、MsgBox関数のところにブレークポイントを設定したため、MsgBox関数が実行する前に一時停止します。

ここから、1行ずつ処理を実行するには[デバッグ]メニューの[ステップイン]をクリックします。F8キークリックでも同様の操作ができます。

すると、MsgBox関数が実行されメッセージが表示されました。

 

OKをクリックすると、次の処理に移動していることがわかります。

ここで、再生マークのボタンをクリックすると、先ほどステップインのように1行ずつの実行ではなく、処理の再開を行います。F5キークリックでも同様の操作ができます。

 

「こんにちは」でOKをクリックすると処理は停止せず、すぐに「こんばんは」のメッセージが表示されます。

この実行の一時停止と再開の機能は、開発が進むと頻繁に使用します。

 

1行ずつ実行するステップインは[F8]キーから、実行再開は[F5]キーから行えます。

メニューをマウスでクリックよりも手軽なので、キーで覚えた方が良いでしょう。

 

エディター背景を黒くする方法

白背景は光が目に多く入るため、目が疲れやすいと感じるかもしれません。

 

目の疲れの軽減や文字の見やすさで黒背景にしたい場合は、[ツール]メニューの[オブション]から設定ができます。

[エディターの設定]タブで背景色や文字色の変更ができます。

単純に黒背景に白い文字にしたい場合は、以下のように標準コードの前景を白、背景を黒に設定します。

その他の色は自由なので見やすいように変更してください。以下は私の設定です。

OKをクリックしてエディターの設定が変更されたか確認してみましょう。

 

 

まとめ

VBA(Visual Basic for Applications)は、ExcelやWord、Accessといった

Microsoft Officeで使用するプログラミング言語です。

 

ExcelやWord、Access 等のOfficeがPCに入っていれば、環境の構築なしに無料でVBAを利用することができるので、学習ハードルの低い言語といえます。

業務を自動化したい場合は、VBAからやってみてはいかがでしょうか。

業務自動化についてはこちらに例があります↓

作って学ぶVBA①Excel集計表作成の自動化

作って学ぶVBA①Excel集計表作成の自動化
備品や機器等をExcelの表にまとめて台帳管理している人は多いのではないでしょうか。 その台帳から、「何月にどれだけ購入したか」「今はどこに保管しているか」などの集計表や棚卸表をまとめたい場合もあるかと思います。 今回は機器管理台帳から、 ...

作って学ぶVBA②Excel台帳から書類作成自動化

作って学ぶVBA②Excel台帳から書類作成自動化
Excelで備品購入などの記録を台帳管理している場合、見積書や注文書等の書類を作成するために、台帳の記録を見ながら作成することがあると思います。 複数の書類を作らなければならないとき、作成のたびに台帳を開いて、外注先や金額などの必要なデータ...

作って学ぶVBA③Excelのデータチェック自動化

作って学ぶVBA③Excelのデータチェック自動化
システムから出力したExcelやCSV形式のデータ一覧を、「データに誤入力がないか?」「不要なデータが出力されてないか」など、チェックする場合があると思います。   データが100件くらいであれば、目視で確認してもいいかもしれないですが、デ...