こんにちはケンケンです。
みなさん、エクセルVBAを使ったことがありますか?
存在は知っている方が多いかと思いますが、実際に使ったことがあり実務で行かせている方はなかなかいないのではないでしょうか。
VBAを使いこなせるようになると、
- 毎日の面倒で繰り返しの多い作業を自動化できます
- 自動化できると、当然時間の余裕が生まれます
- 時間の余裕が生まれると、ほかのことに時間が使えます
- そして、人生が豊かになります
おおげさな表現かもしれませんが、それくらい威力があります。
エクセルを導入している日本の企業は9割を超えるそうです。
ということは、数千万人がエクセルを使っている計算になります。
もし、エクセルユーザーの1割でもVBAが使えるようになったら、日本の働き方が変わるんじゃないかな、と本気で思っています。
一説によるとVBAを使える割合は1,000人にひとり、つまり0.1%ということらしいですから、ハードルが高いのかもしれません。
でも、基本をきっちり学んで、関数などをうまく使っていけば、少ない知識でも多くのことができるようになります。
相応の努力は必要になりますが、VBAを学んで得たスキルはこの先必ず役に立つと断言できます。
人生を変えることも本当にできるかもしれません。
僕もVBAを覚えて確実に働き方や仕事への意識が変わりました。
そして、時間を手にして、自分の世界を広げることに成功しました。
みなさんにも、その状況を共有できればと思っています。
また、このシリーズはエクセルVBA入門編と題しまして、請求書作成を自動化することを目標としています。
VBAって何?
そもそも、VBA(Visual Basic for Applications)とは何でしょうか。
一言で言うと、エクセルで使えるプログラミング言語、のことです。
厳密には、エクセルだけでなくワードやパワーポイントにも使える言語ですが、一般的にはVBAと言えばエクセルと思っていただいて良いと思います。
ちなみに、よくマクロと表現することがありますね。
VBAとマクロは厳密には意味が違いますが、当ブログでは同じものとして扱います。
今後もマクロと表現することがあるかもしれませんが、その際はVBAを指していると思ってください。
ちなみにマクロとは、ある処理について「記録」する機能のことであって、「言語」を指すVBAとは違いますが、VBAを使うための知識としては必要ないので詳しい話は割愛します。
「VBA=マクロ」でOKです。
VBAで何ができるの?
ここからが重要です。
VBAで何ができるの?という問いに対しては、結論
けっこう何でもできます。笑
エクセルで行う処理に限らず、ワードやパワーポイントも操作できますし、IEと連携してデータを取得することも可能です。あと、ファイルやフォルダを操作することもできます。
しかし、ゲームを作ったりするのは現実的ではありません。ゲームを作るのが得意な言語やスマホアプリを作るのが得意な言語というのがあるので、基本そういう用途には使いません。
VBAを使うと毎日行っている作業を自動化できます。
自動化できれば、業務時間が減って助かると思いますよね。
でも、ここで重要なことを言います。
せっかくVBAを使って自動化したのに、これって関数で出来るな、とか関数すら必要なくてショートカットをうまく使えば自動化するほどのものではないのでは?みたいなことって結構あります。
VBAあるあるです。
これはかなり悲劇でして、苦労して覚えたVBAでいざツールを作ってみたのはいいけど、ほとんど意味がなかった。ということになりかねません。
そうなると途端にモチベーションが下がります。
こんなことが起こらないように、何を自動化するかはよく考えるようにすることをお勧めします。
自動化の費用対効果を考えることが重要です。
当ブログでは、そういったことも重視していきます。
■自動化する目安
では、自動化したほうが良いものの目安というと、
- 毎日する業務
- ミスが多い業務
- 両方を含んでいる業務
こんな感じです。
例えば、
1週間に1回行われるミーティングの議事録をエクセルで作成し、それをA課長専用のフォルダにコピーを格納する。
という仕事があったとします。
A課長専用のフォルダに格納する部分をVBAで自動化するとします。自動化することは可能ですが、費用対効果を考えるとちょっと「?」な感じですね。
1週間に1回という期間で、A課長一人が対象なので、業務量は少ないですね。
ただ、この例が、
毎日行われるミーティングの議事録を作成し、それを役職者100名に対して専用のフォルダにそれぞれコピーして格納する。
という仕事だったらどうでしょう。
これをいちいち手作業でやっていたら大変ですね。
この業務専任の従業員が必要になりそうです。
また、ミスも増えそうですね。
これを自動化できたら、かなりの業務効率が図れそうですね。こういう仕事を見つけて自動化できたときはすごい威力を発揮します。
みなさんの仕事で毎日もしくは量が多くミスが起こりやすい業務はありませんか。
考えてみましょう。
下準備をしよう
では、これからは実際にVBAを使っていきましょう。
少し下準備と予備知識が必要になりますので、しばしお付き合い下さい。
その前に僕の経歴と言いますか、VBAを勉強した過程をお話しさせていただきます。
■挫折の連続
僕は、VBA学習を覚えているだけで5回は挫折しています。
1年に1回くらいのペースで挫折してました。だいたい年初に今年こそはVBAをマスターしようと意気込んで勉強を始めるのですが、結局ほとんど成果を上げられずにあきらめる、ということを繰り返していました。
これではいけないと思い、今まで挫折した理由を考えてやり方を変えようと試みました。
そして、なぜ挫折したのかを分析したところ、以下のようになりました。
- 書籍を買いすぎた
- 理屈を詰め込もうとして手を動かさなかった
ひとつずつ説明していきます。
まず、書籍を買いすぎました。挫折期間の合計で15冊は買ったと思います。
当時の自宅の本棚は、書店のラインナップを越えた品ぞろえでした。
今思うと笑えません。これだけ書籍があっても自力ではほとんどコードを書けるようになってないのですから・・・
当然ですが、書籍がどれだけあってもコードを書けるようにはなりません。
書籍は、入門書を2冊程度あれば充分です。あとはネット検索でどうにかなります。
当時は、書籍を買っただけで勉強した気になっていました。
つぎに理屈を詰め込もうとしてほとんど手を動かしませんでした。
プログラミング言語を学ぶのだから理論が重要だろう。と思ってずっとインプットしていたのが間違いでした。
もちろん、プログラミング言語はロジックですべて動作しますから、インプットは大切です。
しかし、それにとらわれすぎると何もできなくなります。
基本を覚えたら即自分で手を動かし、何でもいいので作ってみないとまったくできるようにはなりません。
なので、結論として、
理屈は大事だが実際に手を動かさないと出来るようにならない
ですね。
手を動かしても、エラーがでます。でもそこであきらめずに手を動かし続けると、ヒントというかひらめきのようなものが湧いて解決していきます。
ロジックにとらわれすぎて、手を動かすことに恐怖心を覚えてしまったのが失敗でした。
みなさんは、ガンガン手を動かしていっぱい失敗をしてください。それが上達への最短ルートです。
また、関数などの基礎知識をもっているとVBAの勉強が格段にはかどります。
もし、基礎知識に不安がある方は是非復習しておいてください。
■「開発」タブを表示させよう
それでは、具体的にVBAを使っていきましょう。
エクセルはデフォルトでは開発タブが非表示となっています。
そこでまず、開発タブを表示させましょう。
手順は、
- 「ファイル」タブから「オプション」をクリック
- 「リボンのユーザー設定」をクリック
- タブ一覧で「開発」にチェックを入れる
です。
画面でお見せします。
どうですか?
タブが追加されていれば成功です。
■VBEを起動させよう
続いてVBEを起動させてみましょう。
VBEとはVisual Basic Editorの略でVBAのコードを書くためのエディタのことです。コードを書く専用のメモ帳という感じです。
これからは、これを使ってコードを書いていきます。
それでは起動させてみましょう。
- 「開発」タブの「Visual Basic」をクリック
上記のような画面が表示されれば成功です。
右側のコード入力画面の色が黒になっていますが、設定によって色は変えられます。
デフォルトは白くなっているかと思いますので、あまり気にしなくてけっこうです。
ちなみにVBEを起動するためのショートカットも用意されています。
「Alt」+「F11」で起動できます。
さて、ここまでで下準備は完了です。
次からは、コードを書いていきましょう。
プログラミングの定番「HelloWorld」を表示してみよう
さて、VBEの起動まで出来ましたので、これからは実際にコードを書いていきましょう。
コードは基本的に標準モジュールに書いていきます。
標準モジュールとは、コードを書いたり実行させたりする場所、くらいの感じで覚えておいてください。
VBEを起動した際に標準モジュールが生成されていなかったら、「挿入」タブの「標準モジュール」を選択してください。新しいモジュールが生成されます。
それでは、実際にコードを書いていきましょう。
コードを書く際の決まりごととして、「sub」から始めなければいけません。
そして「sub」のあとに半角分開けてコードのタイトルを書きます。
今回は「aaa」としました。
以下の状態になったら「Enter」を押してください。
そうすると、上記のようになります。
ご覧のとおり、Subで始まりEndSubで囲われます。この範囲のなかに処理内容を書き込みます。
ちなみにSubからEndSubまでをプロシージャと呼びます。プログラミングの処理を書く最小単位を表すものです。
それでは、具体的にコードを書いてみましょう。
A1セルにHelloWorldと表示されるようにコードを書いていきましょう。
以下のように入力してみてください。
1 2 3 |
Sub aaa() Range("A1").Value = "Hello World" End Sub |
この状態で「F5」もしくは実行タブから実行してください。
すると、

A1セルに「HelloWorld」と記述されます。
いかがですか、出来ましたか?
今回は、ここまでとなります。コードの解説は次回にさせてもらいます。
まず、VBAを使える環境を構築しておいてください。
まとめ
とうとうエクセルの最高峰といってよいVBAの学習に入りました。
今回は、VBAの概要を解説してみました。
関数やショートカットなどに不安がある方は、復習をしておきましょう。
次回は、今回書いたコードの意味を一緒に勉強していきます。
お楽しみに!
エクセルVBA入門編~請求書作成自動化への道~記事一覧
【エクセルVBA入門編①】VBAで何ができるのだろうか?【請求書自動作成の第一歩】
【エクセルVBA入門編②】めんどうな仕事はForNext構文で解決【請求書自動化の最重要構文】
【エクセルVBA入門編③】繰り返し作業はFor Next構文で完全自動化!【請求書作成自動化は目前!】
【エクセルVBA入門編④】自動記録を使い方とコード編集法を解説【請求書作成自動化への道】
【エクセルVBA入門編⑤】If Then構文で条件分岐をマスター【請求書自動化の最終ステップ】
【エクセルVBA入門編⑥】手順に沿って請求書を作成してみよう【請求書作成自動化最終章】