Mutable_Yunの業務改善ブログ

業務改善や生産性向上のブログです。自動化の手段として、VBAやRPAの勉強に役立つ解説をしています。

Excel VBAの実力(レベル)を定義してみる 初心者~三段

<二段と三段の定義を入れ替え、内容を一部修正しました(2019/9/14)>

 <二段と三段の定義を修正し、四段を追加しました(2019/11/03)>

 

今回はVBAによるプログラミングの実力(レベル)を定義したい思います。

過去の記事で『「初心者」「入門者」と言う言葉に惑わされてはいけない』という事を書きました。

 

ネットでの質問などを見ると多くの人が「初心者です」と自称しており、本当の初心者が自信をなくしてしまうのでは無いか、と懸念しています。初心者の称号がインフレし、実際の実力がデフレを起こしているのです。これではいつまでたっても「初心者」です。

 

そこで、VBAプログラミングの実力を相対評価では無く絶対評価で定義してみたいと思います。

  • 入門者
  • 初心者
  • 初級者
  • 中級者
  • 上級者
  • 初段
  • 二段
  • 三段
  • 中段以上
  • プロ

いかがでしょうか。

初級者、中級者、上級者といった3段階では無く、細かく分けているのは

「そろそろ中級者の仲間入りだな」「わたしもすっかり初段ね」とステップアップを感じる機会が多い方がやる気が持続すると思うためです。

低い級位ほど上がりやすくなっています。

 

(以下、定義は定義というより特徴になってしまっていますが、わかりやすさを優先)

 

入門者

定義:これから勉強しようと思っている方。この記事を読んでいる方は入門者以上がすでに確定です。

 傾向:やる気がある人とあるフリをする人の2つに分かれる。ずっとアマゾンでどの本がいいか検索するのに時間を使っていて、実際にはコード書いたことが全く無いかほとんど無い。

 

初心者

定義:VBE(Visual Basic Editor VBAのコードを書くためのアプリケーション)を開いたことがあり、「こんにちは」とセルに書き込んだりメッセージボックスを出したことがある。

傾向:本を買って、とりあえず自分で「こんにちは」は書いてみたものの、その後は一通り読んで終わり。ここを乗り越えられるかどうかが一番大事。分厚い本から入ると初心者で終わりやすい(偏見含む)

 

初級者

定義:「このくらいなら手作業でいいじゃん」位の小さな、しかし、実際に使うことが出来るものを一つ作ったことがある。

傾向:ここまでくれば大丈夫。どんなに小さくても、ひとつ作り上げたことがある、と言う事がとても重要。VBAが面白くなりはじめている。

 

中級者

定義:「ファイルを選択して下さい」で右上の×を押されたり、エラーが出て作業中のブックが中途半端な状態で保存されてしまったり、いろいろと失敗を繰り返している状態

傾向:知らないことはインターネットで調べれば何とでもなる、と気づき始めた段階。インターネットと本以外の、本家の情報ソースは日本語で書いてあってもほとんど理解出来ないが、自信をつけ始めている。

 

上級者

定義:自分の作ったものを人に使ってもらえるように努力している段階。処理にかかる時間やコードの流れや変数名の付け方、メンテナンスのしやすさなどを気にするようになり始めるころ。

傾向:頼りにされ始める。一部の人に「あいつはすごい」と思われている。そのグループからPCに詳しいと勘違いされてパソコンの設定を頼まれて困る。一方で自分のショボさが分かってきたのでだんだん謙虚になる。会社のIT部門の人やエンジニア上がりの人にVBAを書いているというのがバレると恥ずかしい*。

(*恥ずかしくありません![断言])

 

初段

定義:配列や内部的に開くと言った操作が慣れてくる頃。エクセルのブックとエクセルアプリケーションの違いが分かっているので、テキストファイルやcsvファイル、tsvファイルが怖くない

傾向:大抵の業務は自動化できるがコードは洗練されていない。クラスモジュールは使ったことが無いし、そもそも必要性を感じていない。自分の実力が自分なりに客観的に見られるようになっている(にもかかわらずネット上の自称「初心者」はこの層を中心に分布していると思います)

 

二段(三段と重複してきます。行ったり来たり。)

定義:クラスやオブジェクトの概念が理解出来ていて、便利さを感じている。標準モジュールの本当の役割を理解し始めて、オブジェクト指向を意識し始める。

傾向:C言語のエンジニアなどPC自体に詳しい人が紛れ込んでくる領域。彼らはVBAの関数を「知らないけど調べたら分かる」というステータスを貫く。やっぱり強い人は強い。(でも、卑屈になる必要は全くない。私たちは業務改善のプロであって、プログラミングは手段だから)

 

三段

定義:OLEオートメーションを使ってOutLookやPowerPointなどのエクセル以外のアプリケーションをExcel VBAから動かそうとする。オブジェクト指向が理解出来ているので、OLE自体に抵抗はない。公式ドキュメントを読み解く力で強い三段と弱い三段に緩く分類される。メールを配信する機能をネットからのサンプルコードのコピペで実装している人はここには含まない。

 

傾向:VBA上がりの人はVBAの関数やエクセル特有のメソッドに詳しいものの、OLEやAPIと言った、他のアプリケーションを使いこなせず、ここにきて本当にやりたいことがなかなかできない。

調べる力によってコーディング力が変わってくる時期。

 

本質は「なんでもいいですよ、調べれば分かりますから」をどれだけ地で行っているか。

 

四段 

定義:APIを使って、他のアプリケーションが提供している関数や機能を利用できる。Windows APIであれば使ったことがある。プログラミングの難しさがコーディングの難しさでは無く、他のアプリケーションと連携したときのバージョンの違いや動作の安定性である事を知っている。むやみに使おうとも思っていない。

 

傾向:社内で講師役ができるが、自分が分かっていることと、教えることができる事が違うことが分かっていたり、分かっていなかったりする。オブジェクト指向とか、自分の中で当たり前の言葉を初心者に使ってしまう詰めの甘さがある。

 

五段以上

定義:Excel VBAの限界を感じていたが、新たな可能性を模索し始める。スーパーファミコンレベルのゲームをエクセルで作り始める。

 

傾向:頭打ち感。これ以上突き抜けるには相当努力が必要。業務効率改善の観点ではこれ以上の上達は不要と思われるが、好きなんだったら勉強をつづけたらいい、と言うレベル。(私はこのレベル以上の人に教えることが出来ない。)

 

五段以上は私が達していないので定義できません。ゲーム作ったり、Windowsの効果音で音楽を作ったりする人たち。プロはマイクロソフトMVP(Most Valuable Professional)などで、VBAを業務改善の一環では無く、VBAそのもの×営業力だけで食べていける人たちです。

 

おそらく中段以上も細かく分けることができると思いますが、このブログの範囲を超えます。いつかできるようになったら追記するかもしれませんが、その時はもはや業務改善ブログでは無くなっているかもしれません。。。

 

<iframe src="https://blog.hatena.ne.jp/mutable_yun/mutable-yun.h