• ベストアンサー

VBAの勉強の仕方

私は今までは、学校の宿題や資格の勉強などは ノートにまとめ、覚える言葉は単語帳に書いて通勤時などに見ていました。 最近エクセル、アクセスVBAにはまってきたのですが ここで回答されている方はどういう風に学習していったのでしょうか? 特にノートなどはとらずに わからないことは調べ、解決し、更に新たなを発見し、またわからないことは調べ、、、 と頭と体と手で覚えていったのでしょうか? こういう勉強法は初めてなので教えてください! よろしくお願いします。

noname#150427
noname#150427

質問者が選んだベストアンサー

  • ベストアンサー
  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答No.3

こんにちは。 ここ最近の掲示板の内容を含めてお答えさせていただきます。 VBAでは、VBEditorに入力して、その反応を覚えることだと思います。VBEditor 自身がエラーを教えてくれますから、デバッグ&コンパイルで、覚えていきます。また、ローカルウィンドウは、VBA独特です。テキストを見ながら、その応用をしながら、自分なりに500コードを入れれば、一通り覚えるといいます。(私は、年間200~300個が限度) 数行で、こんな風にすれば良いのかと思って書いたりしていたら、いつまで経っても脇の甘いコードしか書けません。行数はすくなくてよいのですが、Sub ~ End Sub まで書いて、必ず完結型にして、マクロとして成立しているかコンパイルして確認します。 VBAテキストを手に入れて、なるべく抜け落ちを作らないことです。Webサイトで覚えようとすると、必ず、抜け落ちを作りますのでお勧めしません。テキストの順序はどこからでもよいですが、ワークシートの操作に深入りしないほうがコツです。非常に良くないテキストもありますから、その良し悪しで習得できるか決まってきてしまいます。それでも、遅い人は、2年か3年も掛かります。VBAを一通り覚えて、やっとプログラミングのスタートラインに立ったとも言えます。VBAで、プログラミングの基本を覚えられます。 この世界でスタートラインに立てる人は、志して10人に1人だと思います。ほとんどの人は、そのスタートラインにさえ立てません。その先に進める人は、100人に1人の世界です。中にはたった3ヶ月程度で覚えられる人もいますが、そういう人は、特別な才能です。出来るなら、そういう人は、VBAには深入りしないほうがよいです。 表計算のマクロ(Macro)と呼ばれるものは、Excel 4.0 マクロ関数も、VB6 準拠のVBAも、昔も今もほとんど動きは変わりません。VBAを学ぶことは、VB6を学ぶことと本来は同じであってほしいものですが、そうではありません。特にExcel VBAは、ワークシートなどが複数あるので、基本路線からすると例外が多く、わき道も多いです。VBAは、雑多な環境(Office, VBA, Excel)の言語です。本来は、純正な言語のほうが、習得は早いはずです。 自己解決する気持ちが低い人=質問依存の人は、習得が遅いように思います。概して、コーディング途中のささいなことや例外の問題で質問する人は、説明をしてあげても理解しないし、コーディングで注意されたことを素直に直さない傾向があり、上達が望めません。 本気に覚えたいのでしたら、当分の間は、掲示板でよほどのことがない限りは、ROMに留めたほうが良いです。Q&A掲示板は玉石混交で、初級程度では、良いものと悪いものの区別が付かないので、他人のコードの甘さを気が付かないままに、良しとしてしまいます。良く目的を持って学習したほうが良いという人がいます。元ライブドアの堀江さんなどは、中学生の時に、数ヶ月でプログラミング言語を習得したと聞きます。凡人は、短距離型よりも長距離型で、遠くの先ではなく近い先だけをひとつずつみて、先に進むほうが良いです。一時、調子が悪くても、挽回すればよいです。密度の高い・低いではなく、ゴールが目的です。Web サイトには、そういうステップで覚えられるところがないし、書いている内容に癖が多いです。 ここのカテゴリは異種プログラマが介入しますから、「専門家」と称する素人のコードを見せられます。どんな人でも、Office という雑多な環境の中で、自分なりにルール作りして、それを扱っていくというのは、どんな人でも数年も掛かってしまいます。それは、純粋にプログラミングとは違うことです。 基本事項を、抜け落ちしたままにして続けることが、もっとも上達に災いします。まるで、整備不良の車のようでトラブルの元です。また、安易に人に教えることは、自己満足と増上慢に陥りやすいです。私は、MSDN以外の、他人のコードは、インターネット検索を含めてほとんど参考にしていませんが、雑なコードでも人のコードはチェックはしています。自分の知らない考え方を持っていないか、それとは違ったものはないか検討します。 なお、語学の勉強は、電車で単語帳を見て覚えることではなく、英文を読んだほうが良かったかもしれません。私は書いて覚えたのは中学生ぐらいだけです。いろんな単語の覚え方はあるけれども、英文と共に単語を覚えたほうがよいです。 それと、プログラミングは同じことですが、語学よりもプログラミングの世界のほうが楽です。プログラミングは、ほとんど定石パターンだけです。流れだけを覚えればよく、細かい単語自体を明確に覚える必要はありません。ただし、和英辞典などありえませんから、思い出せない単語を数分考えることもあります。なお、英語は、非常にプラスになります。マイクロソフト・サポートは機械翻訳が半分近くあるし、少し複雑な問題は英文を読まないとわからないことが多いです。掲示板は、概ね、日本語も英語も程度の差はありません。日本で有名な方で、海外の専門掲示板に答えている人もいるぐらいです。MS以外の英文は概ね分かりやすい英語です。MSは、凝った表現が多いです。 なお、ノートの代わりに、メモ帳としてテキストファイルにして検索できるようにしてあります。今は、もう1,000項目を越えます。

noname#150427
質問者

お礼

おお! 極めているのですね!! ノートではなく、電子化しているのですね! 参考になりました。ありがとうございます。

その他の回答 (4)

  • gadd3
  • ベストアンサー率46% (211/451)
回答No.5

書き忘れてしまいました。 >わからないことは調べ、解決し、更に新たなを発見し、 >またわからないことは調べ、、、 >と頭と体と手で覚えていったのでしょうか? 独学の場合、これしかありません。 僕もそうやって覚えてきました。 でも、独学は無駄な回り道や「誤解」をしますから、できれば よい先生についたほうが良いです。 無駄な回り道は、いい経験にもなりますが、 「誤解」はちょっと注意が必要かもしれません。 (いい誤解というか、習熟度に応じてその時点ではあえて詳しく覚えない、 というのはアリだとは思いますが) 僕は「オブジェクト」「イベント」「関数」「メソッド」が最初、ちゃんと 理解できなかったのですが、無理やり考えに考え抜いて、 「こういうことだ」と自分なりの回答を出しました。 でもそのあと、ヘルプがとても読みやすくなりました。 例えば「オブジェクト」なら「モノ」とか「操作対象物」とよく 本にかかれますが、僕は「機能を有するもの」「機能」「ユニット」 「何らかの機能を有したユニット」「目に見えるものでも見えないものでも 何らかの機能を有していれば"オブジェクト"」 と覚えました。 ヘルプを読むときは「機能」と訳しています。 「イベント」は「プログラムが実行できるよ、という合図」と 訳しています。 それが打ち上げ花火のようにいろんな場面で発生しつづけている。 というイメージ。 「メソッド」は、命令の一種だけど、オブジェクトに依存する。 例えば飛行機というオブジェクトなら「飛ぶ」「飛ばす」「走る」というメソッドがあるが、 自動車には「走る」というメソッドしかない。「飛べない」 というイメージ。 「Errオブジェクト」なら「エラー報告機能」「エラー時対処機能」みたいな感じ。 「関数」は命令をかきあつめた自動販売機。要するに「命令群」 「内部で、お金という引数をジュースという戻り値に変換して吐き出して返してくれる。」 みたいな感じ。 正直、邪道かもしれません。 でもこう考えたほうがヘルプの意味がわかりやすく感じたので こういうのもアリだと思っています。 ただ、しんどい。めんどい。 あーまたいいかげんな話を・・・ 忘れてください。 居なかったら、しょうがないので掲示板などを利用します。

noname#150427
質問者

お礼

再度ありがとうございます。 独学は本当に回り道が多いですが、 いろんな発見がありますね。

  • gadd3
  • ベストアンサー率46% (211/451)
回答No.4

>最近エクセル、アクセスVBAにはまってきたのですが 私は最初AccessVBAでExcelVBAはほとんどできませんでした。 やり始めたのは最近です。 基本的に学習は書籍です。 Webは書籍で分からない場合に利用していました。 Web情報は勉強しにくいので。 ちなみにAccessならバージョン97、2000のころの本がよいです。 DAO3.6のMicorsoft Jetデータベースエンジンプログラマーズガイド などもとても参考になります。 >特にノートなどはとらずに これは絶対にムリですね~。 僕、アホだから、すぐに忘れちゃうから。 テキストファイルに1ファイルTipsで覚書を書いています。 この覚書の量をふやすことがよいかもしれません。 こまめに覚え書きをとってます。 でも、よく考えてみると、テキストファイルにするのは あまり効率が良くない気がしてきたので 最近はAccessでシンプルな構造のDBを作ってそちらにTipsを格納してます。 あとで検索しやすいように、自分独自の検索タグを多少つけて。 Accessに情報を入れておくと、テキストファイル化←→Accessと 言う風に行き来しやすいので、とても便利です。 帳票フォームで作っとけば、帳票フィームビューもデータシートビューも 切り替えは1行コードで一瞬ですし。2つも3つもフォーム作る必要も無い。 単票フォームビューもちょっとコード書くだけで切り替えられますし。 そんなことせんと、テキストファイルにしておいて、 フリーの検索機能付きファイラーを使えばそれでいいのかもしれませんが・・・。 Googleデスクトップなどはインデックスを作成しないといけないのが めんどっちいとか、いちいちファイルを開けないといけないのでめんどくさい、とかであまり使っていません。 プラグインがあるのかもしれないけど。 AccessでTips保管すると、日付と時間などで管理すれば、 検索してヒットしたあとに、かなりいろんな並べ替えや 各種操作が自前でできるので、自由度が大きく、また、 Excelでやるよりインターフェイスを作るのが簡単+効率がいいので とりあえずそうしています…。 基本的に、どんなことでも (01)よい先生につく (02)良い本を紹介してもらう、探す。(特に基本的な「考え方」の本。) (03)ひたすら反復(特に基本) (04)人(か自分)の役にたって喜びや達成感を得る がやはり上達の近道かな?と思います。 VBAの場合は、「ヘルプ」の意味がわからないとなかなか上達しないと 思いますので、まずは、「ヘルプ」が読めるように、頑張るとよいと思います。 ただ、「ヘルプ」の意味を知るには、一筋縄ではいかないと思うので とにかくプログラムを作りまくるしかないかなあ、という感じです。 でも、「ヘルプ」がちゃんと読めるようになると、そこからまた 飛躍的に腕が上がると思います。 結果的にはどんな解説本を買うよりも、ある程度詳しく書かれていて 便利です。 (わけのわからんTipsがヒットするのだけはたまらんですが) Accessやっておられるなら、まずは 簡単なSQLとDAO、ADOなど覚えて、 Excelもなら、MicosoftQuery とピボット、それを操作するVBAを 覚えると便利に使えると思います。 MicosoftQueryを使うと、Excelシートをテーブルに見立てて、 ミニRDBが組めます。 どっちかというと、Accessのほうが、イベントプロシージャなどが 書きやすいので、Access中心につかって、COMオートメーションや APIなどを利用して、Excelピボットを連携させる、みたいな、 使い方がよいのではないかと思います。 AccessもExcelも、程度や操作の違いこそあれ、ほどんど似たことができるので RDB、SQL、の理屈(ベン図のような理屈)を勉強して、両方を使えるようにすると 最も効率がよいと思います。 AccessはRDB、Excelは表計算、という区別をするととてもチャンスロス等々を 生むので、「AccessもExcelもRDB。兄弟。適材適所で使え分ける。」という考え方で、 VBAも同時に覚えていくといいと思います。 特にCOMとAPIでの連携技はがんばって覚えてください。 Accessから直接Excelのイベントプロシージャを動かしたりができます。 じゃないと、Accessで5分で作り終る機能追加をExcelで何日もかけたり、 Excelで 5分で作り終る機能追加をAccessで何日もかけたりというバカな ムダをする羽目になります。 ちなみに、僕は零細企業向けの小規模な販売系のプログラムしか作ったことがないのですが もし他人に教えるなら、VBAからは教えないです。 「販促」と「MicroSoftQuery、ピボット、マトリックス表とリスト表の違い、集計と分析の違い、」のかねあい。 どんな販促をしたいなら、どんな列を設けるべきか? 「セブンイレブンとシステム、POS等について」などを説明して(大した説明はできませんが)、 それから、AccessVBA、ExcelVBAと教えていくと思います。 というのも、VBAを書けることが偉いわけじゃないからです。 プログラム書けても、売上が上がらなかったり 人件費が減らせなかったら意味無いからです。 また、VBAや関数なんか書かなくても、いろいろと集計等ができる機能が ExcelやAccessにはいっぱいあります。 書かんでいいものを書く必要は無いです。ムダです。 プログラムは最終的に 「利益金額を上げることができる」か 「コストダウンができる」か、 「お客様(人様)を喜ばせるなど、集客その他に貢献する」ことできなければ、 いくらいいプログラム作ってもゴミにしかならないからです。 (あくまでも、零細用の販売系のシステムは、ですが) 人様の役にたたなければ、プログラムはほんと、ゴミですので そういう目でも見てみてください。 そうすると、勉強法もまた自分で何か考えつくかもしれません。 例えば、「分析」するには、こういう「集計」が要る。 ならこういうシステム構造が要るから、あれもこれも勉強しないかん、 みないになてきて、何を勉強すべきか、見えてくるのでは ないでようか? Officeソフトの場合、VBAも大事ですが、それよりも 機能のコーディネイト。適材適所。こちらのほうが重要です。 機能がちゃんとコーディネイトできていれば VBAがさらにパワーアップします。 ピボットのVBA操縦はこちらのサイトが詳しいです。 一読をおすすめします。 http://pvttbl.blog23.fc2.com/blog-entry-1.html かなり脱線&支離滅裂してしまいました(^^) お許しを。 私かなりいいかげんですので、話半分で聞いといてください。

noname#150427
質問者

お礼

確かにヘルフ゜は最初はとっつきにくかったです。 「(04)人(か自分)の役にたって喜びや達成感を得る」 は大切ですね!! 大変参考になりました。ご回答ありがとうございます。

  • n-jun
  • ベストアンサー率33% (959/2873)
回答No.2

ExcelVBAですが、初めは参考書を観て例題どうりにやってました。 あとはこちらなどの質問を読んで、「どんな感じになるのかな?」と興味本位で コードを作ってみる。 最初の頃は上手くいかないので他の回答者のコードをコピペし、どのように動いているのか 検証を繰り返した。 参考となる物は検証したBookは保存したり、回答内容をテキストファイルでも保存した。 不明な点は過去ログ・ネット検索を繰り返してますが、まだまだ初級レベルです。 参考にしたサイトは”お気に入り”に登録です。

noname#150427
質問者

お礼

参考になりました。こうやって学んでいくのですね。 他の質問においてもn-junさんのご回答はひそかに参考にしています!笑 どうもありがとうございました。

noname#168404
noname#168404
回答No.1

自分なりに問題を作って、実際にやってみるのがいいと思います。 使いやすくしようと思うほど、理想的な使い方と現実的な作り方の違いがわかってくるのではないでしょうか。 最初は、簡単なものから作り始めて、徐々に難しいものに挑戦した方がいいでしょう。

noname#150427
質問者

お礼

やはりノートをとるとかではなく、手で作って覚えていくのですね。 ありがとうございます。

関連するQ&A

  • VBAの勉強の仕方について・・・

    Excel、AccessのVBAの勉強をしようと思うのですが、どういう勉強法が一番覚えやすいですか?? 本などを買ったのですが、コードが書いてるだけで、その応用が上手くできません。 みなさんはどうやって勉強されましたか?教えてください。

  • プログラムについてですがVBAの勉強を始める際にどんな方法が効果的です

    プログラムについてですがVBAの勉強を始める際にどんな方法が効果的ですか?初歩の本は買ったのですがなかなか前に進まずに困っています。ある程度使えるようになった方どんな学習を積みましたか?ExcelとACCESSについてです。ExcelとACCESSとではそれぞれVBAの書き方に違いもありますか?

  • VBA初心者の勉強法とお勧めの書籍

    検索はしてみたのですがイマイチ意志に沿う回答がなかったので質問させて頂きます。 私はもうPC使用歴も長くそれなりに(趣味の領域で、ですが)詳しいと思うのですが今までプログラミングに挑戦した事がなかったので今度挑戦しようと思っています。 そこでお伺いしたいのですが知人に「VBAやってみようかと思うんだけど」と聞いてみたところ 「全部の基礎はVBAだからAccess(やExcel)をやるにしてもやっておいて損はない。AccessをやりながらVBAの勉強をしても良いけど取り合えず純粋にVBAだけの勉強をしてみてはどうか」 と言う風な回答を頂きました。これは結構詳しい知人に聞いたのですがこの意見、(勿論信用していないわけではありませんが)どうでしょうか?(AccessをしながらVBAをすべきか、純粋にVBAから勉強し始めるべきかと言う点も含めてお願いします)これ以外でもお勧めの勉強法があると言う方は教えて頂ければと思います。 またAccessにしろVBAにしろそれらを勉強する上で何がしかの書籍も必要になってくるだろうと思いますがお勧めの書籍もあれば教えてください。 では不足している点などありましたら補足いたしますのでよろしくお願い致します。

  • エクセルでVBAを勉強したいのですが

    エクセルでVBAを基本から勉強したいのですが、お勧めの勉強法や ホームページ、メールマガジン等がありましたらおしえていただけない でしょうか。宜しくお願い致します。

  • 勉強の仕方

    勉強をしてもあんまり頭に入りません。 テストもイマイチな成績です・・・。 ノートに単語を書いているだけじゃダメですか? 基礎よりも応用をした方がいいですか? あんまり勉強は得意ではないです。 楽しい勉強の仕方とかあれば教えて下さい!

  • 英語の勉強法

    こんにちは。maiです。 英語の勉強の仕方について質問します。 私は、読み方・意味は覚えられますが、つづりがなかなか覚えられません。 暗記カード(単語帳)を使ったり、宅習で単語の練習をしたりしています。 もっと効果的な練習法はあるのですか? 教えてください。 ※宅習・・・宿題とは別に大学ノートに勉強をし、宿題と同じように提出するノート。

  • 単語の勉強法

    英語を話す場合も訳す場合も書く場合もある程度の単語は知っていないといけないと思うのですが、皆さんどのように勉強した(おぼえた)のでしょうか? 私は英語を日本語に訳すということが必要なためそのことに特化して勉強していますが、その「訳す」という作業(つまり訳すのだから書けなくても発音できなくてもよい。単語を見て日本語が出てくればよい)を前提にした単語の学習法はどのようなものがあるのでしょう? 「私はこんな教材をこんな風にして使って勉強した」 「教材は使わず自分でこんな風にして勉強したなど」 皆さんの経験を教えていただけませんか? よろしくお願いいたします。

  • FP3級の勉強方法

    私は勉強が苦手で高校までしか言ってないのですが 仕事上FP3級の資格を取ろうと思っています。 独学です。 しかし勉強方法と言うのがいまいちわかりません。 FPは暗記だと思うのですが どうやって暗記をすればいいのでしょうか? ただ参考書を眺めていても暗記はできないタイプなので、 英単語のように豆単に書いて通勤中の電車の中でやろうと思っています。 あと、参考書を読んで自分なりにまとめてノートに書く方法は 頭に入るのでしょうか? ご回答よろしくお願いします。

  • excel2003と他バージョンの違い(VBA)

    エクセルのVBAをこれから学習しようと考えております。 学習の目的は仕事のためなのですが、 職場のバージョンはexcel2003です。 そのためexcel2003のvbaを学習しようと考えて いるのですが・・・。 いづれは職場のexcelのバージョンも2013などの最新に なることも頭の隅にあるため、どのバージョンでVBAを 学ぶべきか悩んでおります。 EXCEL2003でのVBAで覚えたスキルは、 EXCEL2007やEXCEL2013のVBAでもほとんど通用しますか? 宜しくお願い致します。

  • 高校での勉強法

    どなたか高校での勉強法を教えてください。中学校のころは大して勉強しなくてもいい点数がどんどん取れたのですが高校に入ってからめっきりです・・・ 特に教えてほしいのが英語と数学と社会(地理や日本史)です。 今のところの勉強の仕方は数学はノートに学習書の練習問題を解いていき、英語は洋書をノートに写しその中のわからない単語を調べていくという方法で、社会に関してはどう勉強していいのかまったくわからずただ教科書をノートに写しているという状況です。しかも英語は単語は多少覚えたとしても肝心の文法がだめになっているような気がします。 事実、英文を日本語訳するのはできますが日本語を英文に直したり、聞かれたことに英語で答えなさいというのはほとんどできません。 なので心優しい方、あるいは頭のいい方教えてください

専門家に質問してみよう