オンライン健康相談、gooドクター

最近VBAを勉強しはじめました。

基本的なことだとは思いますが、なかなかネットで検索していても頭が混乱してしまうので、こちらで質問させてください。

Range("A1")という記述は、VBAでは何を意味しているのでしょうか?
Range("A1")というのは、Rangeオブジェクトそのものではないらしいことはわかったのですが、そこから先はなんだかチンプンカンプンで。

色々、見ていると、
オブジェクトを返すメソッド??
オブジェクトを返すプロパティ??

四苦八苦しながら、結果的に動くプログラムは書けることは書けるのですが、どうにも、自分が何やっているのかわからないのは気持ちが悪くて。

あと、気になる言葉でアクセッサってのが見つかりました。

もはや、何をどう質問していいのかすらわからないレベルです。

VBAについて、少しずつ、体系的に学びたいと思ってます。
この本を読むとわかりやすいとかそんなアドバイスでもいただけたら、とても助かります。

gooドクター

A 回答 (3件)

こんにちは。



>やみくもに勉強するより、基本的知識を体系的にまず頭に入れて、肉付けをしていくというのが、経験的に効率的なことが多かったので、プログラミングも同じやり方をしようかと思ったのですが。

最初の方法で失敗した後に、私もそのように思いました。早い人では、VBAを3ヶ月程度で覚えてしまう人もいます。教本の選択が大事だと思います。私は、書籍の選択の失敗で、一年を無駄にしてしまいました。あまりに細かいところを覚えようとすると、全体が見えなくなります。分からないことは飛ばして進むということが大事なのです。

これは、「VBAエキスパート」の試験内容ですが、この範囲で、足らない部分もありますが全体的な概要は分かるはずです。

http://vbae.odyssey-com.co.jp/vbae/ex_b.html
http://vbae.odyssey-com.co.jp/vbae/ex_s.html
(試験の受験料は高いので、私は、受けませんが、9割は取れるつもりです)

私が、VBAを始めた理由のひとつに、語学をいくら勉強しても、伸びない代償として、VBAに手を出したことです。

英語などを覚えるよりも、ずっと楽に覚えられます。しかし、語学を覚える手順に似ているように思います。語学は、基本構文を覚えて、それを使います。多くは、パターンがありますから、そのパターンに当てはめて使います。碁や将棋でいう、「定石」しかありませんから、よほどのことがない限りは、「定石」外しはありません。しかし、標準テキストのようなものがないのは、私も痛感させられます。確かに、#2で挙げた、大村氏の『かんたんプログラミング』シリーズは良い本ですが、初級、中級とレベル別けしたほうが良かったなと思いますが、これは、出版社側のつごうのように思えます。あまり内容が細かく書きすぎて、読み手は、途中で疲れてしまいます。それでも、VBAを学校で習いに行ったら、10数万円にもなってしまいます。

新刊 『VBAエキスパート公式テキスト Excel VBA Standard』6/12発売
http://vbae.odyssey-com.co.jp/training/text.html …

まだ、出版されていないように思いますので、この本がどの程度のものかよく分かりません。期待しても良いかもしれません。

多くのプログラミングの書籍に書かれてあるように、実際に、PCで、自分の手でコマンドやコードを入れてみることが早道だといいます。だいたい、500コードを考えて入れれば、覚えられるそうです。一日、ひとつを入れたとしたら、1年以上は掛かってしまいます。3ヶ月で覚えるには、1日5コードぐらいは必要になります。しかし、否定する人も多いのですが、パソコンのない環境でも、頭の中でシミュレートをしても可能です。事実、私は、コーディングで分からないとき、パソコンのない場所で、解き方を思いつくことが多いものです。ある程度実力が付けば、コードだけでも、読み切れれば、それでも覚えられます。また、コードだけで、読み切る力も必要になります。

>VBAってなくなっちゃうんですか?

前回の書き込みを訂正します。気になって、次バージョンの状況を調べてみました。

Next Microsoft Office will continue to support VBA(英文)
「次のMicrosoft Officeは、VBAをサポートし続ける」
Scott M. Fulton  2008/1/23
http://www.betanews.com/article/Next-Microsoft-O …

要約
-------------------------------------
Windows 版Office のVBAマクロ機能は、次バージョンOffice 2010で辞めると発表したのは事実ではあり、その代替えの、VSTA(Visual Studio Tools for Applications)を勧めているるけれども、それは、現Visual Studioのメンバー・チームからの発表である。

Excelチーム開発者のチーリロフは、Mac に対して、VBAを組み込まないという発表はし、また、Ver.4 関数型マクロ形式は取り外すという発表をしているが、「我々は、Windows版Officeの将来のバージョンからVBAを取り外すくという計画がない。」と言っている。
-------------------------------------

記事内容が古いのが、少し、気になるところです。この後に、Mac は、再び、VBAを復活するというアナウンスが出ています。

http://www.microsoft.com/japan/presspass/detail. …
~ 次期 Office for Mac では VBA を再び搭載 ~
2008 年 5 月 14 日 (Japan)
    • good
    • 0
この回答へのお礼

詳細な情報ありがとうございます。

いわゆる入門書は、何となくわかった気にはさせてくれますが、いつも同じあたりをぐるぐる回るような感覚で、スタンダードなテキストって何なんだろうと不思議でした。

VBAエキスパート公式テキスト Excel VBA Standardは買ってみようと思います。

英語ですか。なるほど、習うより慣れろの世界なわけですね。
納得です。

重ねてお礼申し上げます。

お礼日時:2009/06/07 23:46

こんにちは。



>基本的なことだとは思います

まず、ご質問の内容は、上級の開発レベルに出てくるものだったと思います。おそらく、お読みになった文章は、その手の内容でしょうから、ご質問することは構わないですが、当分の間は、わけが分からないはずです。

クラス設計の際に、クラス設計に、オブジェクトに、どういうプロパティを備えるか、どのようなメソッドを備えるかによって、決まってきます。

>Range("A1")という記述は、VBAでは何を意味しているのでしょうか?
例えば、ここに、
ret = Range("A1")

とあれば、Excel Application では、デフォルト・プロパティと判定して、これは、Value プロパティと同等の値を返すようになっています。Rangeは、Application, Worksheet, Range のプロパティとして用意されています。Range は、コレクションとされているのは、オブジェクトの集合体だからです。クラス側からみると、プロパティは、Function であり、メソッドは、Sub にあたります。つまり、概ね、Function は、値を返すもので、Sub は、Action をするものです。(ただし、必ずしも、そうとは限りません)

アクセサ(accessor) は、そのオブジェクトのプロパティにアクセスする方法のことです。

例えば、ActiveCell.Select というのも、そのひとつです。Application 側に備えられているもので、上位オブジェクトを使いコンテナにする必要がありません。コンテナというのは、明示的に上位オブジェクトからのプロパティを指定することです。

Microsoft Office 2000/Visual Basic プログラマーズ ガイド
http://msdn.microsoft.com/ja-jp/library/cc376079 …

ちなみに、このサイトのタイトル、『プログラマーズガイド』というのは、書籍の名称で、このコンテンツの内容の本のことです。Office 2000の『プログラマーズガイド』は、主にコンパイル型のアドインを作るためのものです。この種類の書籍は、学習テキストではありませんし、手に入れても、内容の目的が違ってしまったということで、期待するほどになかった、ということも多いものです。

『Office 2000 プログラマーズガイド』は、デベロッパー版のためのものですが、『Visual Basic プログラマーズ ガイド』は、一般向けに非常に丁寧に書かれたものです。『Office 97 プログラマーズガイド』も、一般向けに書かれたもので、専用の内容ではありません。これらは、ほとんど手に入らないとは思います。一時期は、私も体系的な書籍を手に入れたいとは思いましたが、しだいに、その気持ちが下がってしまいました。

学習テキストでしたら、この書籍でよいのですが、体系的とは言えないかもしれません。すでにご存知でしたら、読み捨てください。

『かんたんプログラミング Excel 2007 VBA 基礎編』技術評論社
(2008/1/8)大村 あつし (著)
http://www.amazon.co.jp/exec/obidos/ASIN/4774133 …

英語が得意な方なら、Amazon.com のMarket Place から、Microsoft の専門書を手に入れる方法もあるかと思いますが、Amazon のReaders の評価は概ね低いようです。Microsoft のサポートの英文は、私などの non-native には、奇妙な単語の使い方だなって思うことが多いですが、native も同様に感じるのかもしれません。

日本では、日本語の専門書は、プレミアが付いてしまい、それで流通すればよいものの、流通しないのだから、正直なところ、腹立たしく感じます。置いておけば置くほど、その価値が下がるものです。もう、VBAが終わってしまうのは明らかですから、あまり、高い専門書を手に入れても、それを習得する頃には、無駄になってしまいます。

かといって、VSTA はあまり一般的ではありませんし、VSTO として、VS2008 を勉強されてもよいのですが、プロフェッショナル版でないといけません。私などは、お金もありませんので、せいぜい、VS2005のスタンダード版では、直接、Office には役立てられません。

お茶を濁すような内容になってしまいましたが、ひとまず、このぐらいにしておきます。
    • good
    • 0
この回答へのお礼

詳細なコメント、ありがとうございます。

何が、基本的で何が基本的でないのかが、わからないのが辛いところです。

なお、VBAって多くの人が使っているプログラミング言語だと思ったのですが、書籍が入門本や、ハウツゥ本ばかりで、標準的なテキストが見あたらないんですね。

やみくもに勉強するより、基本的知識を体系的にまず頭に入れて、肉付けをしていくというのが、経験的に効率的なことが多かったので、プログラミングも同じやり方をしようかと思ったのですが。

でも、VBAってなくなっちゃうんですか?

それはちょっと、ショックかも。

お礼日時:2009/06/06 19:18

私はオブジェクトだとばっかり思っていましたが、違うのですか? 確かにヘルプを見ると、メソッドとして機能したり、プロパティとして機能したりしていますね。



難しく考えるとわからなくなるので、使い方が分かっていればいいのではないでしょうか。使っているうちに、おいおい分かってくることもあるでしょう。

「アックセッサ」は私も初耳です。でも、知らなくてもプログラムできるので、無理に知る必要はないと思います。
    • good
    • 0
この回答へのお礼

ご回答ありがとうございます。

ご回答者No2のアドバイスと合わせて、どうやら基本的なことではないらしいことがわかりましたので、ご忠告に従うのが賢いようです。

お礼日時:2009/06/06 18:54

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

gooドクター

人気Q&Aランキング