質問: 事務作業効率化のため、Excel VBAの勉強をしています。 ブルーバックスの ・入門者のExcel VBA ・脱入門者のExcel VBA
回答: 大村 あつしの本はあまりお勧めしません。 あいつの教え方は超いいかげんで、「VBAのもっとも重要な肝心なところ」を「どの本でも絶対に教えない」からです。 つい最近も初心者向けの動画URL付(22本)の本を出しましたが、オブジェクトの階層構造の説明が昔からのまま全く進化がなく、動画でもいい加減な説明をしていました。 「日本のデータ管理やVBA」を「10年は遅らせた」張本人だと思っています。 本当に「マジのやる気」があるのなら、以下の2冊は絶対にはずせません。 (僕も読んでる最中ですが、この2冊以上に、「ある程度まともな方向で」VBA自体の仕組みを解説している本は見たことがありません。) (01)入門レベルでは決して足りない実務に必須のスキルとは ExcelVBA 実戦のための技術 (02)パーフェクトExcel VBA がとても参考になりますが、このベストアンサーの方の言う通り、VBAはクラスモジュール(自分独自のオリジナルのオブジェクト)が作れるようにならないと、「本当のところ」のことはわかりません。 いい加減な著者どもにいいように振り回されるだけに終わります。 (なぜ大村あつしがダメなのかの答えもこの回答の中に書いてあります。) 上記の2冊は、そのクラスモジュールの作り方が比較的わかりやすく書いてあります。 なのでお勧めです。 最終的にはこの本がわかるような内容の本を買ってみてください。 (なかなか難しいかもしれませんが) この2冊を読む前に、まずは以下の本も、8章以降を熟読するといいと思います。 (03)『 いちばんやさしいExcel VBAの教本 人気講師が教える実務に役立つマクロの始め方 』 それ以外にも、初心者本を終えたら・・・、 『 「一般データ(文字系のデータ)やオブジェクトを返すいろんなタイプの自作関数」を作りまくること 』 ・・・が非常に重要です。 これは、すべての「初心者本を終えた人」の、「次なる目標」、です。 クラスモジュールが作れなくても、それができるだけでも相当な上達が見込めます。 逆に言うと、それが思い通りに自由に作れないようでは、「初心者本卒業後」は、どの本を読んだとしても「応用が利かないまま終わるだけ」のため、上達は100%無理です。 お金を払って習っても、それが思い通りに自由に作れないようでは、100%、上達せずに挫折します。 断言します。理由はこれ以降を読むとなんとなくご理解いただけると思います。 あと、「式」の意味、「返す」の意味、ウィッチウィドウでの各種チェック(値、型、オブジェクトの階層やプロパティ値のチェック)などがわかると、ヘルプやオブジェクトブラウザが読める・扱えるようになるのでさらに上達します。 基本、 ★オブジェクト変数が扱えて、 ★「一般データ(文字系のデータ)やオブジェクトを返すいろんなタイプの自作関数」が自由に思い通りに作れて、 ★「式」の意味、「返す」の意味、がわかる。それをウィッチウィンドウで全部ちゃんと確認できる ★VBAの命令語句は、7~8割の命令が「返す」仕組みを持っている。関数だけでなく、演算子も、メソッドもプロパティも。 ★ウィッチウィドウでの各種チェック(値、型、オブジェクトの階層やプロパティ値のチェック)ができる、 ★階層構造の一覧図がわかる、 ★「Item」という名前のプロパティやメソッドを省略しないオブジェクト式の書き方がわかる、 ★Applicationの層(Topの層)からちゃんと書いて「省略しない」オブジェクト式の書き方がわかる、 ・・・といったことができると、1年後くらいに、「爆発的に」上達する可能性がすごく高まります。 関数も演算子もプロパティもメソッドも、テキストファイル操作のための「ステートメント」も、「VBAの命令語句のほとんどすべて」は、以下の自作関数と似たような動きをします。 多くは以下の(a)~(e)の5パターンに納まります。 そしてそれはすべて、「ウォッチウィンドウで確認できます」。 (a)文字系の一般データ(数値、文字列、日付、TrueやFalse)だけしか返さない自作関数 (各種関数、演算子、プロパティの多く、メソッドのうちの少し、も。) ※これは自作のワークシート関数としても使えます。 (b)何らかの動きをしつつ、同時に、文字系の一般データ(数値、文字列、日付、TrueやFalse)をも返す自作関数 (関数やメソッドのうちの少し、も。) (c)オブジェクトだけしか返さない自作関数 (プロパティの一部、も。) (d)何らかの動きをしつつ、同時に、オブジェクトをも返す自作関数 (メソッドの一部=AddやOpen等々、関数の一部=GetObject関数やCreateObject関数等々、など、も。) (e)何も返さずに何らかの動きだけをする自作関数 (メソッドの多く。) 以上が、 (f)「返る」「戻る」ものは一般データかオブジェクトの2つしかない。 (g)プロパティとメソッドは、「特定のオブジェクトでしか動けない自作関数のようなモノ」。 (h)コレクションもオブジェクトの一種で、オブジェクトには単一のオブジェクトとコレクションオブジェクトの2つしかない (j)コレクションは単一のオブジェクトの上にではなく、横に、同じ階層に「居る・位置する」と考えるほうがわかりやすくなる ということななどどともに分かるようになると、オブジェクトブラウザも扱えるようになると思います。 そして、ヘルプとオブジェクトブラウザが、市販書籍よりも、Web検索よりも、便利で速いことに気が付いてくると思います。 あと、「データ処理の基礎」(Excelの基礎ではなく)として、「SQL」は絶対に知っておいたほうがいいです。 SQLはこんなようなものです。 ↓ SQLはExcelVBAでも使えます。(MicrosoftQuery、ADO、DAOなどで。MicrosoftQuery機能にて方言の違いを理解する必要もありますが。) お勧めの入門書籍は以下です。 (04)イラストで理解 SQL はじめて入門 Excelしかわからない上司が部下の女子に教えてもらう、的なストーリー仕立てのわかりやすい本です。 がんばってください。