はじめに
過去ほとんどプログラミングに触れてこなかった社会人が、VBAの勉強を始めて「作りたいもののイメージができる」「時間はかかるがコードからある程度仕組みが理解できる。」と感じられるようになったので、それまでの勉強法をまとめます。
参考書通りの一般的な勉強法とは異なるので、「参考書での勉強が続かない」「理屈より実践で覚えたい」という方の参考になれば幸いです。
自己紹介
勉強前のレベル
私は理系出身ですが、専攻は機械設計だったため、プログラミングにはほとんど触れてきませんでした。
・分岐処理や繰り返し処理の存在は知っているが、コードは書けない
・ExcelはVLOOKUPなど一般的な関数を使えるレベル
・プログラミングに対する苦手意識はそこそこある
なぜVBAから始めたか?
-
前任者のVBAマクロを引き継ぐ必要があった
実務で必要なため、強制的に触ることに。 -
環境構築が不要
Excelがあればすぐに始められる手軽さは大きな利点。これは初心者にとって重要。 -
作りたいものが見つけやすい
Excel業務の自動化など、「やりたいこと」が明確で、動機づけしやすい。
私自身がまだ初心者だからこそ「環境構築の難易度の高さ」や「とっつきにくさによる参入障壁」、「分からないことが分からない状態」についてはよく分かるつもりです。
ExcelVBAがおすすめ!!!とは言いませんが、プログラミングを知るということに関しては適していると思います。
私の勉強方法(実践ベース)
私は「教科書を最初から読む」勉強法が苦手です。その代わり、作りたいものベースで学ぶ方法を取りました。
イメージは「教科書を読んでからテストを受ける」ではなく、「テスト問題を解きながら教科書を調べる」という学び方です。
まずは 作りたいもの を具体的に決めます。
例としてエクセルで 「リストから特定の品番に備考(注意点等)を入力する機能」 を作成します。
Step1.作りたいものを決める
まず、やりたいこと(ゴール)を具体的に決めます。
例:エクセルのリストから特定の品番に注意点(備考)を入力する機能
「作りたいものがない」という場合は定期的にExcelを使用する仕事を思い出してください。
Excelで行っていることはほとんど自働化することが可能です。まずは自分の仕事を自働化してみてください。
以下、作成例
・Excelのデータ整理
フィルター等で特定のデータだけ取り出す、や重複データを処理する
Step2.その作業を“言語化”する
次に、それをどんな工程で実行するか、人間の作業ベースで細かく書き出します。
例(作業の分解):
- 入荷リストのブックを開く
- 確認するシートを選ぶ
- 品番の範囲を確認する
- 1件ずつ品番をチェックし、対象品番なら備考を記入
- 次の品番へ移動して繰り返す
「こんなことまで書く?」と思うくらい細かく分けるのがコツです。
Step3:1工程ずつコードの意味を調べ、コメントを書く
これが最重要ステップです。
例えば「Excelブックを開く」という処理を調べると、以下のようなコードが出てくると思います。
Sub Sample1()
Dim listFullName As String
listFullName = "C:\Book1.xlsx"
Dim wbList As Workbook
Set wbList = Workbooks.Open(listFullName)
Dim wsList As Worksheet
wsList = wbList.Sheets("リスト")
End Sub
この内容に対して1行ずつ意味を調べてコメントを入れます。
中学校の英語の授業のイメージで全ての単語の意味を調べてください。
Sub Sample1()
Dim listFullName As String '文字列を入れる為の変数を宣言
listFullName = "C:\Book1.xlsx" '開きたいExcelのフルパスを格納
Dim wbList As Workbook 'Excelブックを入れる為の変数を宣言
Set wbList = Workbooks.Open(listFullName) 'Excelを開きながら変数に格納、openメソッドで引数にフルパスを入れる
Dim wsList As Worksheet 'Excelのシートを入れる為の変数を宣言
wsList = wbList.Sheets("リスト") '「リスト」という名前のシートを変数に格納
End Sub
変数宣言とかは型名含めて理解できるようになればコメントを省略しても良いと思います。
「なんとなく理解」ではなく、「少しの応用が自分で書ける」レベルまで掘り下げます。
応用ができるようになったら自分が求めている機能に変更して実装をします。
以上内容を繰り返して作りたいものの作成を進めてください。
この方法のメリット
・知識の吸収が早くなる
作りたいものが明確なので、調べる目的も明確。
・モチベーションが続く
作ったものがすぐ使えるので達成感がある。
・分からないことろが分からない状態になりにくい
一行ずつ理解する為、正しく動作しない時に原因箇所の予測ができる。
・参考書の理解が後から深まる
ある程度経験してからさんk読むと、足りない部分を補ってくれるので理解しやすい。
おわり
最近プログラミングの勉強を始めた仲間から
「よくプログラミングは『実務ベースで勉強するほうがおすすめ』みたいなこと聞くけど、具体的にどうしたらいいのかわかりにくい」
ということを聞き、自分の勉強法の記録を残すことにしました。
どんな勉強法でも「調べて、理解する」工程は避けて通れません。参考書をコツコツ読むのが苦手な方は、ぜひこの方法を試してみてください。