🍣

「バカを殴るVBA」勉強方法

に公開

本記事は「バカを殴るVBA」という記事に関連した勉強方法です。

「バカを殴るVBA」関連記事の地図
https://zenn.dev/mambo_ykhm/articles/f3dca31da309d0

「バカを殴るVBA」と過激なタイトルを付けてますが、要は「実務でゴリゴリに使えるノウハウ詰まったToolをいきなりコード見て勉強しよう。その方が早いよ、って事を言いたい記事です。
(ちなみに”バカ”とは正確性が必要なExcelのデータシートを手変更で不完全修正してくる類のポンコツの事です)

まぁ、IT系の現場では「Tool改修して~」(知らぬ言語+知らぬ仕様)なんて依頼ザラにあります。なので「未知の何かを勉強する一方法」として読んでもらってもよいと思います。

勉強方法概要

本題です。未知のモノを学習するのには
①理解精度はともかく、高速でその対象全体を一度巡回する。
②矢継ぎばやに2回目、3回目を行う。(ただし方法を変える)
のがよいのでは、と思っております。

以下具体例を交えて説明してゆきます。

目的「VBAを使って業務に使える効率化Toolをつくれるように学習する」
方法「実運用中のノウハウ詰まったToolをいきなり読む」

上記を踏まえたうえ学習方法をアドバイスするなら以下かと。

1巡目

【やること】
・Toolを動かせるようにする
  (環境設定ができてる。Tool動作が体感できてる)
・デバッグができる
  (VBEの起動、ブレークポイント、ローカルウインドウを理解)
・ステップ実行で全ソースを通す
  (コード全体像を把握する)

【期待する効果】

ここでの期待する効果は「脳みその中にピンを打ち込む事」です。
上の青の円が自分の脳みそ、黒丸がピンです。
しらない用語、概念などが脳みその中に打ち込まれる、それだけが期待する事です。なので「理解した」はここで求めません。参加者の顔ぶれを確認するだけです。

2巡目

【やること】
・コードを写経する。

手本のToolを見ながら、別のファイルにToolを作るように写経(まるうつし)します。コピペでなく手打ちで。
UIとなる入力シート/出力シートも自分でデザインしつくります。
完璧でなくともよく、全部理解してなくてもよい。
とにかく手を動かしてやってみる。
 
なんのために?と思われる向きもあるかと思いますが、悩まずヤルのです!
断言してもいいですが、絶対に一発でスムースにはいきません。
綴りミスから環境設定ほか、とにかく「こんなところで詰まるのか!」って事を発見します。またここでのトラブルって言語化しにくいのでそれを発見し自覚できるだけでも相当に有用です。
「ただの丸写しでしょ?」と思わずやってみてください。

【期待する効果】

1巡目、2巡目の作業を通じて打ってきた「頭の中のピン」が少しづつ関連しだしてゆきます。
「あ、Cells()とRange()はセルを扱う2つの方法なんだな、Cells()は変数での変動的な指定でRange()は固定的な指定なんだな」とか。
アハ体験ってやつですが「知識を得る+アハ体験する」ことが「体得」だと思ってます。
知識だけでなく、「体験で分かった、腹落ちした」っていう実感です。
東洋哲学で重要視されるやつ。
これ幾つか体験すると勉強が面白くなってきます。

3巡目

【やること】
・VBAの総合的本を流し読み
 
 VBAの本もいくつかタイプがあります。
 [A] 関数とその使い方・説明を羅列してあるモノ
 [B] プログラミング言語としてのVBAの説明を総合的に書いてある本
 [C] 特定の目的によっているもの(自動株売買ツールつくれるよ!とか)

[B]のタイプの本を見つけて一冊おいておくとよいです。
個人的には大村あつしさんのVBA本はわかりやすくかつ高度で良いと思います。
総合本なので色々知らない事も書いてあると思いますが、分からない所は飛ばしてよいです。目的は頭の中のピン/線を本の上で見つける事ですから。
「あ、これ、これ知ってる!」ぐらいの感覚で、総合本のなかでどのくらい自分の知ってる事をみつけられるか?ぐらいのノリでよいかと。
 
【期待する効果】 

これまで頭の中に売ってきたピンがつながり線になって、その線がいくつか集まると面をつくります。面を作った状態というのは実用Toolに落とし込める知識です。

「インプットするExcelファイル、後処理でシート名つかうな…んじゃ、最初にファイルオープンの時にとっておくか!情報1と情報2、追加でFor EachのLoopを使ってシート全情報に…」 みたいな知識が連動して”機能として想像できる”状態です。

”機能として想像”できるネタが増えると、仕様を聞いただけで「アレとアレとアレでできるな…」と頭の中で青写真ができます。頭の中で青写真ができるようになると数日程度でTool作れるようになります。

4巡目以降

自分でやること(不足点)を決めてやってみてください。
 (自分で方法を決めて自分で実践するというのが理想の学習方法だと思います。お金かからないしね)

1巡目~3巡目の作業を盲目的に行うだけで、VBA初心者は激烈に学習効果が上がるとおもいます。

この解説「過去の自分の行動」を言語化しました。
「わけわかんないToolやシステムをイジれって言われたとき何してたっけ?」と思い出しながら。
個人的な気質によって合う/合わないあると思いますが、もしこの学習方法が合いそうならば参考にしてみてください。

まんぼはオッサンなので過去に何度かこの手の教育を行ってきた事があるのですが、全く学習効果が上がらないタイプの人がいます。

・ 「評判の良い本や資料」を集める"だけ"の人。
・「それやって意味あるんですか?」と無駄を省きたがる人。
・二言目には「コスパ」「タイパ」と言う人。

これらの人は結局「手を動かさない」んです。能書はいうけど。
(もちろん仕事自体もダメダメでした)

この手の人って「目に見えないモノ」「権威づけられてないモノ」をバカにする傾向があるんですよね。
なので「無心になにかする」って事ができない気質のようにみえます。
そうゆうタイプに人にはこのやり方は向いてないかなぁ…?

まあ、勉強方法の一例だと思って、やり方を試してくださいな。

以上

Discussion