学問とは、意外なところに、閃きがあるものです。
一つの分野は、身の丈ほどの勉強をすれば十分です。
後は、各分野の知識を、横につなげることを考えます。
プログラムも、自分自身の理屈で納得できるようにしましょう。
目次
Functionプロシージャに対する一考
こんにちは。伊川(@naonaoke)です。
今回は、私が、最近、実体験をしたことを紹介します。
VBAの成長過程に関しては下記の通りではないでしょうか?
- 長いコードを書く
- ループが、書けるようになる
- 変数の仕組みが理解できる
- 長いコードを分割して、プロシージャを呼び出せるようになる
- 処理を早くするために、配列を覚える
- Functionプロシージャが理解できるようになる
- クラスモジュールが理解できる
このような感じで、私は、理解してきました。
この中で、Functionプロシージャに関して、苦手意識を持つ人は多いのではないでしょうか?
戻り値って何?
そのほかに、やれ、引数だの、関数の型だの、もう、わかんねぇとなります。
私も、Functionプロシージャには、苦手意識がありました。
しかし、どのブログよりもわかりやすく解説をしたいと思います。
このブログはこんな人にお勧め
- VBAを勉強している人
- Functionプロシージャで、挫折をしている人
- VBAは、難しいと思っている人
このブログを、読み終わるころには・・・・
本当にカンタンな説明ですが、Functionプロシージャの仕組みを理解できます。きっと、あーそうだったのかと思います。
後は、応用なので、ご自身で精進してください。
Functionプロシージャに、なぜ関係代名詞なのか?
関係代名詞とは、2つの文をつなぐ役割があります。
I have a friend (私には、友達がいます)
My friend speaks English (その友達は、英語を話します)
I have a friend who speaks English(私には、英語を話す友達がいます。)
これが、関係代名詞です。
多分、中学校で学ぶ英文法で、最も重要な部分であり、絶対に、高校入試にも問われる分野です。
この関係代名詞が、Functionプロシージャを理解するための、知識になるなんて・・・・
Functionプロシージャ 作業手順 その1 失敗のコード
毎回、毎回、最終行の取得が面倒なので、下記のようなコードを記載しました。
ExcelVBAの逆引辞典を参考にしました。
このエラーが出ます。
理解できている人は当たり前と思うでしょう。
しかし、Functionプロシージャの理屈が理解できていないと、こんなことすら、分からないのです。
NET等で紹介されているコードは、必ず、消費税の計算か、テストの合格判定です。
こんなの、私にとって、まったく、リアリティがないので、面白くもなんともないのです。
Functionプロシージャ 作業手順 その2 下記のコードで実装できた
これが関数の説明です。
エラーの原因は、maxR(ws)といように、引数を入力しないために、エラーが発生しました。
通常のループのみなら、この書き方は知りませんよね。
まだまだ、勉強不足です。
Functionプロシージャ 作業手順 その3 突然、ヒラメキがきた
maxR(ws)は、Functionプロシージャで、説明されているのか、と思いました。
トイレに立っていると、ヒラメキが来ました。
Functionプロシージャは、なんか、関係代名詞みたいだなって。
関係代名詞・・・・・・・
VBAでI have a friend who speaks English(私には、英語を話す友達がいます。)を、実装してみようと思いました。
ならば、伊川直助のFunctionプロシージャも作ろうと思いました。
長年、苦しんだことは、オートルックアップクエリ同様に、突然に、ヒラメキが来ました。
後は、実践あるのみです。
これでもっと、複雑な処理ができるようになると思います。
ここがポイント
VBAは、気づけばこんなことなのです。しかし、こんなことを、思う前に挫折をしてしまう人が多いです。もったいない。も少しのところまで、きているかもしれないのに、自分自身で、あきらめるのはもったいないです。知識を横につなげることで、様々なヒラメキがあるかもしれません。ヒラメキは、読書と、実践によって、身に付きます。
まとめ
最初のコードは、教えてgooで教えてもらいました。
いま、マジで感動しました。
これからも、さらに勉強しようと思いました。
今回も最後まで読んでいただきありがとうございました。
今回のサンプルファイルは、No219です。
わからない事を延々と考えるのは、無駄です。
- なんで作動かないの?
- もうやだ!VBAなんか嫌い!
- ネットで調べても情報がない!
必ず作動するコードが、ここにあります。