今回は、 Excel VBA を最も効率的に 独学 する方法についてシェアしますね。
こんにちは、ゆう(@ProgYuki)です。
多くの方は普段の業務の中でExcelをよく使うと思います。
今の時代、業務にExcelは欠かせないですし、仕事をする上でも必須スキルの一つですよね。
Excel関数を覚えたり、効率的に操作をするためにショートカットを覚えたり、ってところまでは多くのビジネスマンがやられてるかと思いますが、Excel VBAまで学習して、自分でバチバチ書いて業務効率化してますっていう方はまだ少ないかと思います。
ただ、VBAが書ければ、本当にいろんなことができますし、仕事にルーティン業務が多い方ほどプログラミングの力を爆発的に発揮して業務効率化ができるので、VBAを勉強しようと考えたことがある方も多いのではないでしょうか。
私も
- 仕事の業務効率化をしたい
- VBAでプログラミングを学びたい
という理由で学習を開始して、途中で挫折していた期間もありますが、6年くらいは勉強したりツールを作ったりしてました。
VBAの良いところは、普段の仕事に活かせてかつ、他のプログラミング言語のように構築環境を整えなくてもExcelさえPCに入っていればすぐに書き始めることができるところですよね。
しかも、仕事中にプログラミングの学習もできるという。私は、必要な仕事をできるだけ早く終わらせて余裕のある時間を意図的に作り、VBAを学んだり、ツールを作ったりしてました。
なので、
「プログラミングを学びたい!」
という方も他のWeb系の言語を勉強する前にVBAから学習を始めるのが効率的だと思ってます。
ということで、今回は私が6年ほどVBAを使っていて最も効率的だと考える独学方法をお伝えしたいと思います。
私は、知らなくて挫折したり遠回りしたので、学習を始めた当時知りたかったなという内容を書いてみます。
これからVBAを学習される方は、ご参考にしていただければと思います。
Excel VBA でプログラミングを最も効率的に 独学 する方法
Excel VBA は 課題解決型 の 学習 が 効率的
VBAを勉強する上で多くの方がやってしまう間違いが
- 本を読むところから学習を開始する
- 学習サイトの初心者編から順番に学習を始める
ってパターンです。
「え、新しいことを勉強するんだから当たり前じゃないの??」
と思う方もいるかと思いますが、この学び方が通用するのは学校等の強制的に学習する環境がある時のみです。
もし、本や学習サイトから学習を開始すると8割以上の方が途中で挫折すると思います。
なぜかと言うと、VBAを初めて学習するのに初心者編から1ページづつ学習していくようなやり方をすると情報量が多過ぎるし、一度に全てを覚えることはできないし、何が重要なのかもわからないので圧倒されてしまって
「あ、やっぱり無理かも」
ってなります。
才能がある人は別として、普通はそうなります。
ポイントとしては、学校での学び方と独学の学び方は、根本的に異なると言うことを意識した方がいいです。
これは、VBAに限らず、社会人になってから何かを独学する機会が増えると思うので、他の分野でも共通で大事です。
どういうことかと言うと、学校で学ぶ場合は講師が重要なポイントを教えてくれたり、定期的にテストがあって必要な知識を定着する機会があったり、周りに切磋琢磨できる仲間がいたりして、基本的にレールに乗っていれば必然的に一定のレベルまでは習得できます。
でも独学は違います。
重要なポイントを見つけることもモチベーション維持も自分で管理する必要があります。
学校で学習していたようなやり方でやると環境がないので、挫折しやすくなります。
独学での学習において、最も重要なポイントは
課題解決型の学習をする
と言うことです。
具体的に言うと、目的から考えて必要なことから順番に学習していく、と言うことです。
これはVBAに限らず、どんな分野にも共通します。
つまり、VBAを効率的に独学する方法は、
- 欲しいVBAツールのアイディアを考える
- そのツールが既にないか調べる
- 人のコードを読んで、調べながら学ぶ
- 学習サイトや本等で体系的な知識を確認する
という流れになります。
一つづつ深掘りしていきますね。
欲しいVBAツールのアイディアを考える
重要なことは、
VBAを学ぶ結果、どんなアウトプットがあるのか
ということです。
学ぶからには、何かしらの理由があって、アウトプットがあるわけですよね。
「〇〇の業務が面倒だから効率化したい。そんなツールが欲しい。」
と言ったものですね。
目的が明確になることで、それに必要な優先度の高いインプットが明確になるので、学習をしていて頭に入りやすくなります。
人は、何が重要なのかがわからずに情報のシャワーを浴びるとストレスを感じるし、圧倒されてしまって挫折しやすくなるのですが、重要なものがわかり、そこから集中して学習することでスムーズに進められます。
そのツールが既にないか調べる
目的が明確になることで必要な優先度の高いインプットが明確になるというお話をしました。
ただ、インプットを明確にするためには、欲しいツールやそれに近いツールが既にないかを調べ、既存ツールのプログラムコードを取得する必要があります。
基本的に自分が欲しいと思ったツールは、世界の誰かが既に近いものを作っているはずなので、見つかります。
探す際のポイントは、
- 日本語サイトになければ、Englishで検索する
- 1つのサイトでよくわからないこともあるので、複数サイト参考にする
です。
プログラミング関連の情報は、圧倒的に英語サイトの方が多いので、英語で調べるといろんなプログラムコードが見つかります。
VBAや他のプログラミング言語を今後学んでいく上で、深く追求していくほど英語は避けては通れなくなるので、苦手な方もある程度は克服する必要が出てきますね。
また、プログラムコードを見ても最初は全くわからないと思いますが、1つのWebサイトだけでなく複数のサイトを見比べて、簡単そうなものを見つけることは大事なので、意識した方が良いです。
プログラムは、同じ処理を実行するにしても正解が一つではなく、いろんな書き方があるので、とてもシンプルで効率的なコードを書いている人もいれば、無駄に難しいことをしようとしている人もいます。
なので、いろんな人のプログラムコードを見比べるのはとても実践的ですし、効率的にVBAを習得する上で重要です。
ちなみにもし、自分が作りたいツールに近いプログラムコードが全く見つからない場合は、初心者で自分がゼロから作ろうとすると十中八九挫折するので、一旦後回しで、他に欲しいツールの中でプログラムコードがあるものを見つけてください。
人のコードを読んで、調べながら学ぶ
とりあえず何かしらのプログラムコードが見つかったとします。
プログラムを書くためには、当然プログラムが読める必要があるので、見つけたプログラムコードを解読していくことから始めます。
英語の学習と同じで、読み→書き、の順番で学ぶわけですね。
プログラムコードを解読していくというのは、
プログラムコードを読みながら、わからないコードを一つづつ調べて何をしているのかを理解する
ということです。
プログラミングを勉強する上で、このプロセスが一番力がつきます。
答えを暗記するとかじゃなくて、一つ一つのコードを調べて、理解するんです!
最初から全て理解できなくても良いので、複数のプログラムコードを見てみてください。
「このコードよく出るな!」
って言うのがあったら、それが重要なものだってわかりますよね。
プログラムコードを読みながら、いろんなコードの部品を学んでいくイメージです。
例えば、
「セル内のテキストの操作はCells().ValueやRange().Valueでできるんだな」
みたいな感じですね。
プログラムコードの進行は、
- 順行
- 条件分岐(IF文)
- ループ(For文 or while文)
の3パターンしかないので、そこを意識すると理解がしやすいと思います。
基本的に上から下へとプログラムが実行されていきますが、IF文があればそこで条件判定して処理を分けてますし、ForやWhile文があれば一定の条件で同じ処理をループしています。
ちなみに
「Excelのどこでプログラムコードを書けば良いのかがわからない」
って方は、下記の記事を参考にされてください。
この記事は私が作ったツール紹介の記事ですが、「VBA プログラムの表示」の項目の後にプログラムコードを書く画面の表示の仕方などが詳しく書かれてます。
学習サイトや本等で体系的な知識を確認する
学習サイトや本は、基本的に辞書的に使うのが正しい使い方だと思ってます。
プログラムコードを見たことない状態で本を読んでも情報が多すぎて圧倒されてしまうと思いますが、一旦実際のプログラムコードを見て、いくつかのコードを理解した上で読んでみると結構頭にすっと入ってくると思います。
私が使っていたおすすめ本を下記にご紹介しますね。
今でも何かツールを作るときには参考にするのですが、この本の良いところは、
- 初歩的な内容から巻末には効率化ツールのプログラムコードも紹介されている
- 基本コードは網羅的に画像やコード例付きで紹介されている
- 手のひらサイズで持ち運びしやすい
ところです。
一方、この本に含まれていない内容としては、
- ワードやパワポ等の他のOfficeソフトと連携するプログラム
- IE操作をするためのプログラム
等です。
これらのより高度な内容は書かれてないです。
ただ、この1冊あればExcel内で処理する系のツールは何でも作れるので、特に初心者にはおすすめです。
ちなみに勉強を継続する上でのコツは、
細かいところまで暗記しようとしない
ということです。
ほんと暗記とか必要ないです。
「このコードを使えば、こんなことできたな」
ってのを思い出せるレベルであれば、必要なことがわかり、細かいところは調べることができるので、暗記しなくていいです。
実際にツールを作る時の流れは、また別で詳しく書くかもしれないですが、簡単に言うと
- ツールアイディアを考える
- アルゴリズムを考える
- 必要なコードを調べたり、挙動を検証したり
- コードをアルゴリズム通りに組み立てる
という流れです。
大事なのはアルゴリズムで、プログラムのコーディング自体は今まで作ってきたツールのプログラムコードなどを切ったり貼ったりパッチワークして作るので、慣れてくるとほぼ自分で1から書くということは無くなってきます。
なので、細かなコードの書き方を全部覚えようとしないでも大丈夫です。
まとめ
ということで、長くなりましたが、VBAを最も効率的に独学する流れは
- 欲しいVBAツールのアイディアを考える
- そのツールが既にないか調べる
- 人のコードを読んで、調べながら学ぶ
- 学習サイトや本などで学ぶ
ということになります。
やはり、学校での学習と異なり、独学は常に課題解決型の学習を心がてみてください。
目的が明確で、それを解決するために必要なことをインプットしながら、ある程度知識がついたら学習サイトや本で体系的に学ぶというのが実践的で効率が良い学びです。
それでは、本日は以上になります。
Twitter(@ProgYuki)でも情報発信しているので、もしこの記事が参考になっていたら、ぜひフォロー、いいね、RT等をよろしくお願いします!
ゆう
コメント