ExcelVBAの基礎知識・書き方・おすすめの学習方法を解説

皆さんは、ExcelVBAを知っていますか? ExcelVBAができるようになると、Excelの作業を自動化できるだけでなく、様々な作業を効率化できます。

ただ、なんとなく難しいイメージを持っている方も多いのではないでしょうか? そこで今回は、マクロとVBAの違いとは?といった基礎的なことから、以下のような応用的な方法まで、徹底的に解説します!

  • VBAを書くための準備
  • VBAの処理を書いて動かす方法
  • VBAのおすすめ学習方法

目次

マクロ・VBAとは?

はじめに、

マクロとかVBAってよく聞くけど、どんな意味なの?

と混乱する方が多いので、マクロとVBAの違いについて簡単に解説します。マクロは操作を自動化するための機能で、VBAはマクロの処理を動かすプログラムです。

画像:マクロとVBAの関係性のイメージ

たとえば、「ブック1のデータをコピーして、ブック2にデータを張り付けて保存する機能」のような、機能がマクロです。このマクロを動かすプログラムがVBAで、VBAには次のようなコードが書いてあります。

  • ブック1を開く
  • ブック1のデータをコピーする
  • ブック2にデータを張り付ける
  • ブック2を上書き保存

このように、マクロとVBAは切っても切れない関係なので、簡単に関係性を覚えておくのがおすすめです!ちなみに、マクロとVBAについては以下でわかりやすく解説しているので、以下も見てみてください!

VBAを使うメリット

VBAを使ったことがない人にとっては、VBAでどういったメリットが得られるのか分からないですよね。そこでここでは、VBAを使用する代表的なメリットをご紹介します。

開発が比較的容易にできる

VBAはプログラミング言語の中でも比較的難易度が低く、学習にかかる時間も短いです。特に、Visual Basicとは構文が同じなので、Visual Basicの学習経験がある人はすぐに開発に取り掛かることができるでしょう。

他のプログラミング言語と違い、環境設定もほとんど必要ありません。

また、多くの企業で使用実績があることから、インターネット上にも解説サイトがたくさん存在します。VBAでやりたいことがある時に「調べても情報が出てこない」ということは、基本的にないと言えるでしょう。

開発・運用コストが安い

VBAは、ExcelやAccessといったOfficeアプリケーション上で使用されます。他のプログラミング言語の開発では、サーバーを用意したりIDEといった有料のツールを使用することも多く、開発にはコストが掛かることが一般的です。

しかし、VBAはOfficeアプリケーションがPCにインストールされていれば開発を始めるにあたって必要なものはないので、コストがかかりません。今日Officeを導入していない企業の方が少ないと思うので、ほとんどの場合は追加のコスト不要で開発を始められるでしょう。

運用に際してもOfficeさえ使える環境を維持すれば、特にライセンス等は必要ありません。VBAの開発・運用コストは、Officeの導入・維持のコストと同等だと考えればよいでしょう。

作業者の負担を軽減できる

事務処理など、エクセルで毎日同じような作業をすることはないでしょうか?こうした作業をVBAで処理すれば、作業する人の負担を軽減できます。

また、VBAを使用して処理することで「誰が作っても同じ成果物が作成できる」といったことも実現できます。属人化しがちな作業でも、VBAを使うことで誰でも同じクオリティの成果物を作れるのは非常に大きなメリットですね。

VBAを使ってできること

ここでは、VBAを使ってどのようなことができるのか、代表的なものをご紹介します。実際に会社でしている作業に当てはめて考えると、よりイメージしやすいでしょう。

単純作業を自動化する

「複数の伝票を開いて印刷する」「大量のデータを集計して表にまとめる」等の何度も単純な作業を繰り替える作業は、自動化できます。こういった単純作業は、人間が処理する以上ケアレスミスなども発生しがちですが、VBAで処理すればミスも発生しませんし高速に処理することが可能です。

手作業で行っていた時に比べて高速に自動で処理できるので、今まで作業に費やしていた時間に並行して、別の仕事を行うこともできます。

メールの送受信を自動化する

意外なことに、ExcelやAccessで行う作業だけでなくメールの送信といったこともできます。

事務員の方であれば、毎朝決まった企業に送る定型文のメールなどはないでしょうか?こういったメールがあれば自動化し、メールを作成する手間を短縮できますよ。

メールの作成・送信は失敗できないので、思った以上に神経を使います。自動でメールを送信できるようにしておけば、精神的にも楽に簡単にできるのでおすすめです。

Webからのデータ取得を自動化する

VBAでは、IE(Internet Explorer)の操作が可能です。IEを操作してできることの例としては、以下の通り。

  • Excelの英文をGoogle翻訳で日本語化
  • Webページの見出しを取得して出力
  • Googleの検索結果一覧を取得する

インターネットを使用した単純作業を自動化できる」と考えれば良いでしょう。特に、検索してExcelに貼り付けるといったような作業であれば、自動化できる可能性は高いでしょう。

なかなかVBAのWeb連携ができる人はいないので、身につければ社内でも貴重な人材となれるかもしれませんよ。

【超初心者向け】VBAを書いて動かす方法

次に、VBAを書く方法について解説します。

開発タブを表示する

まず、マクロ・VBAを作るための準備として、「開発タブ」を追加します。「開発タブ」の追加方法は次のとおりです。

1. ファイルタブからオプションを選択

画像:開発タブの追加

2. リボンのユーザ設定から開発タブにチェックを入れて、OKボタンクリック

画像:リボンのユーザー設定

これで開発タブが追加できました。

画像:ツールの開発タブ

VBEを開く

次に、VBEを開く方法について解説します。VBEは、VBAを書くためのエディタです。開発タブからVusual Basicを選択すれば開けます。

画像:Vusual Basic

開くと、次のようなエディタが起動します。

画像:Vusual Basicエディター

標準モジュールを追加する

次に、コードを書くためのモジュールを追加する方法について解説します。標準モジュールを使えば、簡単にコードを書くことができます。「プロジェクトエクスプローラで右クリック → 挿入 → 標準モジュールを選択」で標準モジュールを追加できます。

画像:標準モジュール追加

追加すると次のようなウィンドウが出てきます。

画像:標準モジュール 新規画面

VBAを書くための要素は大きく分けて3つありますが、最初は標準モジュールだけ覚えておけばOKです。

VBAを書くための3要素

  • 標準モジュール
  • ユーザーフォーム
  • クラスモジュール

簡単に解説すると、標準モジュール・クラスモジュールはどちらもVBAのコードを書けるモジュールです。

クラスモジュールを使うとオブジェクト指向を意識したプログラミングができるようになるのですが、標準モジュールだけでも十分なツールが作れるので、最初は覚えなくてOKです!ユーザーフォームは、Excelで以下のような画面を作るときに使います。

画像:タスク登録画面

ユーザーフォームは便利なのですが、VBAの基礎を覚えてから作るのがおすすめです。以下で作り方についてまとめているので、VBAが慣れてきたら見てみてくださいね!

Subプロシージャを作る

次に、Subプロシージャを作る方法について解説します。冒頭で説明した通り、「マクロは操作を自動化するための機能で、VBAはマクロの処理を動かすプログラム」です。そのため、まずはマクロを作るための箱を作ります。

Sub マクロ名を入力してEnterキーを押すと、次のようなコードができます。

画像:Sub マクロ名の入力

「Sub マクロ名() ~ End Sub」ここまでがマクロを作るための箱になります。この中にVBAのコードを書いていくことで、マクロを作っていきます。マクロ名の部分は日本語でも英語でもOKです。

ただ、英語で書いている人が圧倒的に多いので、英語で書くのがおすすめです!

処理をVBAで書く

次に、マクロに簡単な処理を書く方法について解説します。先ほど作ったマクロの中に処理を書いていきます。今回は簡単な例としてA1セルに「初めて書いたVBAコード」という文字列を書き込むためのコードを書いてみます。

サンプルコード:

Sub マクロ名()
  Worksheets("Sheet1").Range("A1").Value = "初めて書いたVBAコード"
End Sub

画像:VBEの画面

Rangeメソッドを使えば、簡単にセルに値を書き込むことができます。Rangeメソッドの詳しい使い方については以下で詳しく解説しているので、気になる方は見てみてくださいね!

作ったマクロを実行する

次に、作ったマクロを動かす方法について解説します。Excelの画面から実行する方法、VBEから実行する方法の2つがあるのでそれぞれ解説しますね。

Excelの画面から実行する方法

まず、Excelの画面から実行する方法について解説します。手順は次のとおりです。

1. 開発タブからマクロを選択

画像:開発タブからマクロを選択

2. 作成したマクロ名を選択し、実行ボタンをクリック

画像:作成したマクロ名を選択

VBEから実行する方法

次に、VBEから実行する方法について解説します。手順は次のとおりです。

1. マクロを選択してカーソルをマクロ内に表示

画像:マクロの記述

2. 実行タブから「Sub/ユーザーフォームの実行」をクリック

画像:実行

実行すると次のようにセルに文字列を書き込みます。

実行前:

画像:実行前エクセルシート

実行結果:

画像:実行後エクセルシート

「Sub/ユーザーフォームの実行」はF5キーでも実行できるので、合わせて覚えてくのがおすすめです!開発中はVBEで実行して動きを確認し、マクロを使うときはExcelの画面から実行のように使い分ければOKです!

これで、「セルに文字を書き込むマクロ」をVBAで書いて実行することができました。

VBAのおすすめ学習方法

ここまでの説明で、VBAを書く方法・作ったマクロを動かす方法はなんとなくわかりましたね。ただ、この先どうやってVBAを学んでいけば良いかよくわからない方も多いでしょう。そんな方向けに、おすすの学習方法についてご紹介します!

本で学習する方法

まずは、本で学習する方法です。整理された情報をまとめてみることができるので、体系的な知識を付けていきたい方におすすめです!とはいえ、VBAの本は多すぎて買うときに迷ってしまうので、おすすめ本を紹介している記事を紹介します!ぜひチェックしてください。

わかりやすいサイトで覚える

本は丁寧な解説がまとまっているため1冊は持っておいた方がいいのですが、最新の知識が漏れてしまったり、膨大な量の基礎知識がありすぎて学習のモチベーションを維持するのが難しかったりします。そのため、お気に入りの学習サイトを1つ見つけて学んでいくのがおすすめです!

とはいえ、VBAのサイトでも1から見ていくと膨大な量のページがあるため、おすすめの検索方法をご紹介します。「site:VBAのお気に入りサイトのURL 調べたいキーワード」でググる方法です。

頭に「site:URL」を付けてから検索すると「指定したURLのサイトの中から検索する」ことができるので、自分がわかりやすいと思ったサイトから欲しい情報を調べることができます。侍エンジニアで調べる場合は、次のような感じです。

画像:「https://www.sejuku.net/blog VBA コピー」を検索

わかりやすいサイトの入門記事をいくつか見る → site:URL + キーワードで調べつつ覚えていくという流れで学んでいけば、自分がわかりやすいと思ったサイトから効率的にVBAを学ぶことができてとてもおすすめです!

おすすめの学習ステップ

本やお気に入りのサイトを見つければ学習を進められるのですが、何からどう覚えていけばいいのか最初はよくわからないと思います。

基礎って何から学べばいいの?

というのが本音ですよね。そんな方向けに、おすすめの学習ステップをご紹介します!

  1. 変数の使い方を覚える
  2. セルに値を書き込む方法を覚える
  3. シートにボタンを追加してVBAの処理を動かす
  4. 条件によって処理を分ける方法を覚える
  5. ループ処理する方法を覚える
  6. マクロの記録でExcelの操作を自動でマクロ化する

3までやれば、「シート上に置いたボタンをクリックしてセルに値を書き込むマクロ」を自分で書けるようになります。このように、まずは自分の書いたVBAをボタンクリックで動かす方法を覚えるのがおすすめです!

その後、4で処理の条件を分ける方法、5でループ処理する方法を学ぶことでより実践的なコードが書けるように学んでいくイメージです。最後に、日々のExcel操作を自動化するVBAを書くために、マクロの記録機能で保存したVBAのコードを使った、より実践的なテクニックを学んでいきます。

6まで学ぶことができれば、「VBAの基礎はわかっている & 自分で書いたコードを動かせる & Excelの操作をVBAで作れる」状態になるので、あとは細かい処理の書き方を「site:VBAのお気に入りサイトのURL 調べたいキーワード」でググりつつ作っていけばOKです。

調べるときキーワードサンプル

  • site:https://www.sejuku.net フィルター操作
  • site:https://www.sejuku.net コピー
  • site:https://www.sejuku.net シート操作

VBAの将来性

VBAを学ぼうと考えている方の中には、「将来使われなくなるのでは?」という疑問をお持ちの方もいらっしゃるでしょう。そういった方向けに、VBAの将来性について解説します。

Officeの需要に左右される

VBAは、ExcelやWord等のOffice製品とセットの存在と言えるので、Officeが導入されていない企業では利用ができません。ただ、昨今のビジネスシーンではOfficeの利用はスタンダードともいえ、利用していない企業の方が稀です。

運用にコストは掛かるものの、取引先の企業とのやり取りに使用する事も多く、利用を辞めることは難しいでしょう。今後Officeに変わるツールや利用を辞める特別な理由がない限り、これからもOfficeは利用され続けると考えられます。

こうした理由から、VBAの需要は少なくとも向こう5~10年はあると予想できるでしょう。

仕事が獲得しづらい

VBAを使用した案件は数が限られており、VBAだけで食べていくのは現状難しいと考えられます。

大手クラウドソーシングサイトのクラウドワークスで仕事を検索した場合、案件数はわずか9件という結果でした。

※2020年6月時点

エンジニアとしてのキャリアを考える場合、VBAだけしかプログラミング言語を習得していないというのは危険な状態です。転職の際などアピールポイントの一つにはなりますが、VBAの他にプログラミング言語を習得しておくのは必須でしょう。

長年アップデートされていない

VBAは事実上、20年以上の間言語のアップデートがされていません。プログラミング言語はアップデートされ新たな用途を見いだせる場合が少なくありませんが、VBAの場合は長年同じ用途でしか使用されていないということになります。

これからの時代に発生する新たな需要にVBAが対応できない可能性も高く、他の言語に置き換えられるというパターンも考えられるでしょう。スプレッドシート等のブラウザベースのサービスがシェアを伸ばしていることもあり、これらのサービスにシェアを奪われることも視野に入れておいた方が良いです。

まとめ

今回は、VBAの基礎・簡単な作り方・おすすめの学習方法などについて解説しました。まずは、今回の記事を見つつ「自分が書いたコードが動く体験」をして、VBAを楽しんで取り組んでみてください。

楽しくなるともっと覚えたい欲が出てくると思うので、おすすめの学習方法を見て学んでいきましょう。VBAができると、控えめに言って見える世界が変わりますので、ぜひ使ってみてくださいね!

この記事を書いた人

北海道出身の30歳で、フリーランスエンジニア兼テックライターとして活動中。新卒入社したメーカー系のIT企業で、システムエンジニアとして約5年勤務。

Webアプリ、業務アプリ開発において、要件定義 ~ 運用保守まで様々な経験あり。また3歳の娘がいる1児のパパで、日々娘との時間を確保するために仕事を頑張っています!
侍エンジニアでは、【誰でもわかるレベルのわかりやすさ】を意識して、記事を執筆中。

目次