VBAを学び始めても、最初はなかなか結果が出ない。(業務改善出来ない)
学習への投資時間と、業務改善のスピードが全く一致しない。
イメージは、最初の数カ月はいくら学習を進めても、1秒も業務は改善されない。
通常、関数を学んでからVBAへステップアップする人が多いが、関数はほとんど学習時間=業務改善効果に直結する。
学習すればするほど、右肩上がりで業務が改善されていく。
ところがVBAではこの現象は起こらない。
何故かというと、マクロを組むには、あらゆる知識を複合的に使う必要があるからだ。
例えば、「あるフォルダに入っているExcelファイルの、3番目のシートを印刷したい」という処理を行いたい場合、少なくとも以下の知識が必要となる。
・Do loop処理でファイル名一覧を作るためにループ
・Dir関数の挙動
・ブックを開く、閉じる処理
(細かく言うと、シートを指定する処理とかもあるが、こういうのはすぐに理解できる知識なので、割愛する。)
つまりDo loopの知識を学んでも、この処理は実装出来ないのである。
しかもdo loopを理解しても、Dir関数が分からなければファイル名の指定が出来ない。
したがって、処理に必要な知識を全て学んで初めて土俵に立てるのである。
しかも、マクロはエラーとの格闘である。これらの知識を学んでも、マクロを組んでからエラーが起きないかテストする必要がある。
一方、関数の方はどうか。
関数は、求めたい結果と関数が1対1で対応している場合が基本である。
合計を求めたい→Sum
空白以外のセルの個数を知りたい→Counta
などなど…
確かに、複雑な処理結果を求めたい場合はネストが必要な場合もあるが、その場合も基本の関数の組み合わせでしかない。
このため、関数は学習すればするほどグングン業務が改善できる実感が湧きやすい。
では、VBAの業務改善の効果が表れるのは、どのタイミングか?それは以下の知識を学んでからである。
・For
・最終行の取得
・ブックを開く、閉じる
・処理したいシートの指定方法
これらが理解できれば、以降はグングン成長できる。
何故なら、これらの知識にはメソッドの使い方などのエッセンスが詰まっているからである。
自動化をしたい場合、ターゲットのオブジェクトが変わるだけで、基本的な文法は共通するところがある。
これらの知識があれば、あとは右肩上がりで業務の改善が進んでいく。