今回は、VBA初心者向けに、まずは何をやるべきか、お教えします!
VBA初心者に必要なことは以下の3点です。
- VBAを学ぶ目的をはっきりさせる。
- とりあえず動くコードを書く。
- 概念の理解は後回しにする。
一つずつ見ていきましょう!
- VBAを学ぶ目的をはっきりさせる。
- 「VBAを学ぶ目的は、業務の効率化をしたいからだ!」というあなた!それではVBAを学ぶ目的は、はっきりしているとは言えません。
なぜなら、業務の効率化、というざっくりした目的だと、入門書を1ページ目から読むことでしかあなたの目的は果たせなくなり、学習の効率が著しく下がるからです。具体的な目的とは、以下のようなものを言います。
A.毎月印刷しているExcelファイルが100個あって、一個一個手作業で開いて印刷、ということを行うのをどうにかしたい
B.集計方法が複雑すぎて、人為的なミスが頻繁に起こっているファイルをミスなくやれるようにしたい。
等です。
Aの目的であれば、
Workbooks.open Filename:= " 〇〇.xlsx"
ActiveWorkbook.printout
ActiveWorkbook.close savechanges:=false
この三行を書けるようになれば良いですし、
Bの目的であれば、if文から学習すれば良いことになります。VBAを学ぶ目的をはっきりさせないと、入門書を1ページ目から読破することになり、挫折率がUPします。
- 「VBAを学ぶ目的は、業務の効率化をしたいからだ!」というあなた!それではVBAを学ぶ目的は、はっきりしているとは言えません。
- とりあえず動くコードを書く。
- あなたがVBAを学ぶ根本的な目的は何でしょう?そうです。業務の効率化ですよね!
そのためには、見やすいコード、保守しやすいコードを書くことは、優先順位としては低くなります。優先すべきは、とりあえず動くコードを書き、どんどん業務を効率化していくことを優先しましょう。
どういうことかと言うと、「最終行を取得するためにはCells(rows.count,1).end(xlup).rowを使う」とか、「コードを使いまわせるように、Callメソッドで呼び出せるようにコードを細分化する」だとかをやっていると、本来の目的から脱線していき、そのまま挫折してしまいます。
まずは見にくい、汎用性が低いコードでも良いので、あなたの業務を効率化しましょう!
- あなたがVBAを学ぶ根本的な目的は何でしょう?そうです。業務の効率化ですよね!
- 概念の理解は後回しにする。
- 「オブジェクトはモノです。セルやシートのことです。」「プロパティは属性です。シートの色などです」…この説明で、「あぁなるほどな…」とすぐに腑に落ちるでしょうか?きっと答えはNOのはずです。私はこの説明を始めて聞いたとき、「そもそもExcel自体がPCのソフトなのに、なんでオブジェクトはモノなんだ…?」といった疑問を抱き、学習が滞ったことがありました。特にユーザー定義関数を使う場合には概念の理解は必須ですが、初学者の場合は細かいことは抜きにして、例えば
「ActiveSheets.range("A1").interior.color = vbRed」 とすれば、A1セルが赤くなる!とだけ覚えておけば十分です。
- 「オブジェクトはモノです。セルやシートのことです。」「プロパティは属性です。シートの色などです」…この説明で、「あぁなるほどな…」とすぐに腑に落ちるでしょうか?きっと答えはNOのはずです。私はこの説明を始めて聞いたとき、「そもそもExcel自体がPCのソフトなのに、なんでオブジェクトはモノなんだ…?」といった疑問を抱き、学習が滞ったことがありました。特にユーザー定義関数を使う場合には概念の理解は必須ですが、初学者の場合は細かいことは抜きにして、例えば
さて、以上3点を気を付ければ、あなたの学習効率はぐんぐんUPするはずです。