|
トップ > コンピュータテクノロジー > プログラミング > Visual Basic
http://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q1222208742
>Excel VBAをマスターした方。どの程度勉強しましたか?
に対する回答です。
--------------------------------------------------------------------------------
BA狙いのおいらが、あえて自爆覚悟で私見を述べますよ(笑)
>勉強法としては、全くの初心者ですので入門書(2冊)を暗記するほど読み、
実際にプロシージャを書いてみました。
たぶん、ある程度機能を理解しているのではないか?と、推測いたします。
>でも、いざ実務に応用しようとすると、サッパリ分からないのです。
「単語の用例」に例えてみます。
例えば「御中」という単語を辞書で調べて覚えたとします。
---------------------------------------------------------
郵便物で、会社・団体など個人名以外のあて名の下に添える語。
三省堂提供「大辞林 第二版」より(by goo辞書)
---------------------------------------------------------
そしてあるとき、宛先を書かなければならなくなったときに、自然とこの単語が頭に思い浮かぶはずです。
つまりこの場合は、「御中」という単語の意味を知っていたために、
「郵便物で、会社・団体など個人名以外のあて名の下に添える語」が必要と感じたときに結びついたわけです。
IT業界では通常、ある事柄についての機能を知る(つまり前者のパターン)を「正引き」、
機能を実現させるための手段を知る(つまり後者のパターン)を「逆引き」と言っています。
簡単に言うと「正引き」は、こうしたら、こうなる。「逆引き」は、こうするためには、どうする?です。
先に述べたように、質問者はある程度機能を理解しているのではないか?と、推測いたします。
つまり「正引き」「逆引き」については、ある程度の知識を得ているということになります。(推測ですよ?)
では、なぜ応用できないか?
それは、そもそも与えられた目的を「逆引き」にまでブレークダウンできていないという事だと思います。
先の例えでいくと、
誰かに「○○のお知らせ」を通知しておいて。と、頼まれたとしたとき、電話にしようか、メールにしようか、書簡にしようかと考えて、書簡という選択をしたわけです。さらに葉書か封書かという選択を経て宛名を書くレベルに行き着きます。
そのような過程をVBAの世界で行わなければならないわけです。
VBAの一つ一つの機能なんてものは、本当にどうでも良いような小さな機能に過ぎません。
ですが、それらの機能が繋がって大きなシステムとなっているのも事実です。
ですから、逆にVBAで何かをしようとしたら、その目的を小さな機能にブレークダウンせざるを得ないわけです。
簡単に言うとそのような作業、それがプログラミングなわけです。
waratazo123さんがおっしゃるように、このようなノウハウはどのVBAの書籍にもないと思います。
また個人差があるのも事実です。人によっては、難なくブレークダウンできる人もいます。
敢えて近道とすれば、多くの「逆引き」パターンを組み合わせてみることですかね。
例えば、「シートのコピー」と「セルへの代入」があれば、「シートをコピーして、そのコピーしたシートのセルA1に文字を代入する。」
とか、逆に「シートをコピーして、そのコピー元のシートのセルA1に文字を代入する。」とか。
どんどん自分で思いつく「逆引き」の応用の組み合わせを作って試してみるのもいいかもしれません。
実際多くのVBAの講師なんかも、習った機能を組み合わせて課題を作るわけですし。
そうしているうちに、どんどんコツがつかめてくるのではないでしょうか?
まあ、自分で問題作って嵌ったら、またここに質問すると誰か親切な人が教えてくれますよ(笑)
「excel VBA 逆引き」でググってみたサイト↓
Excelノート - 項目一覧
http://www2.hornet.co.jp/tomoko/MikoNotes/default.htm
すぐに役立つエクセルVBAマクロ集
http://www.asahi-net.or.jp/~zn3y-ngi/
「excel VBA TIPS」でググってみたサイト↓
Office TANAKA - VBA Tips
http://officetanaka.net/excel/vba/tips/
まあ、いろんなサイトあります。
あ、最後に
>Excel VBAをマスターした方。どの程度勉強しましたか?
おいらはプログラマーじゃないんで、マスターするつもりはないですよ?(笑)
勉強もあまりやった記憶はないです。その度にHELPみて、サイト見て。。。
ただ機能の切り分け(ブレークダウン)は、結構最初からできているかもしれないです。
逆に機能のブレークダウンができれば、あとはなんとかなるんですよ。がんばってください。
--------------------------------------------------------------------------------
おいらは色んな講習会を経験してきました。学生時代のBASICから始まって、社会人になってWindows入門から、Word/Excel&VBA/Access/Powerpoint、LANネットワーク、Linux、VisualBasic&Database、C、Java、情報処理試験対策。。。ほんと色々です。
そこで思ったのは、やっぱ個人差ですね。すんなり理解する人もいれば、全く理解できない人もいる。
これは年齢や性別問わず、本当に個人差です。
実際IT会社の講習しているときに、この人はこの業界では無理かなぁと思うことも多々ありました。
逆に一般の会社の受講者でも、この人センスあるなぁと思うことも。
プログラマとしてのセンスという意味では、この質問への回答にあるように「機能の切り分け(ブレークダウン)」がうまくできるかどうか、なのかな?と思います。
だいたいプログラムの講習会で嵌る最初の関門は、関数(プロシージャ)です。
これは「機能の切り分け(ブレークダウン)」ができていないということに、他なりません。
それぞれの機能を切り分け分離する。ひとつひとつの機能を単純化することにより、ミスを少なくする。
だいたいプログラムのコーディングの長さは1画面といわれます。それ以上になると、全体を見渡せなくなり、ミスを誘発するわけです。
「機能の切り分け(ブレークダウン)」は、IT業界では必須な能力です。
ちなみにこの「機能の切り分け(ブレークダウン)」を業務レベルで行うと、所謂SEなのだと思います。
|
YahooでVBAの質問をしたものです。
頂いた回答だとまったくわからなかったので、もし補足をいただけるなら助かります。。
2009/2/4(水) 午前 9:58 [ asa*i89* ]
BAありがとうございます。
確かにこういう手法は巷のテキストにはないかもしれません。
でも自分がテキストを作るなら、絶対にとりあげますね(笑)
VBAを習得するのであれば、変数、型、式、演算子を理解することが、はじめの一歩と思いますのでがんばってください。
2009/2/4(水) 午前 11:03 [ hig*shi*an*ga*a_b*d ]