- ベストアンサー
VBA初歩的質問
- VBA初心者による質問です。『かんたんプログラミングexcel2003VBA 基礎編』という書籍を参考にしていますが、データベースをリストに追加する際に疑問が生じました。具体的には、なぜlistobjectsではactivesheetを使用するのか、selectionを使用するとエラーが出るのか知りたいという内容です。
- VBA初心者のmatyuさんが、『かんたんプログラミングexcel2003VBA 基礎編』という書籍を参考にしていますが、データベースをリストに追加する方法について疑問があります。具体的には、listobjectsではなぜactivesheetを使用するのか、selectionではエラーが出るのか知りたいという内容です。
- VBA初心者のmatyuさんが、『かんたんプログラミングexcel2003VBA 基礎編』という書籍を参考にしていますが、データベースをリストに追加する方法について疑問が生じました。具体的には、listobjectsではなぜactivesheetを使用するのか、selectionではエラーが出るのか知りたいという質問です。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
単純な話だと・・・ Selectionは、一般には、Rangeオブジェクトを戻す で、ListObjectsプロパティは、Worksheetオブジェクトの子 (ただし、Excel2003以降のものに限る、Excel2002には、ありません) 「Range("A3").Select」の後に来る「Selection」は、「A3」のRangeオブジェクトだからだと・・・ かなり基礎的な話で、オブジェクトの親と子の関係が、判らないと、質問者さまのような質問になります
その他の回答 (1)
- Wendy02
- ベストアンサー率57% (3570/6232)
こんばんは。 私は、真面目にVBAを勉強して、丸6年になります。ご質問の本質的なことは、ぜ んぜん、初歩的とか基礎的なことではないと思います。どんなベテランでも同じ ことが起こります。これは、VBAのスクールのベテラン・インストラクターに聞 いても同じことを言うはずです。 現実的に、それはコーディングの結果でエラーが出てから考えるしかないと思い ます。言い換えると、ListObjects の親オブジェクトが何かって、私も覚えてい ないというか、ListObjects って何かすぐに分からないです。しかし、エラーを 出したから、間違えたというだけです。 そういうのを、初歩的とかいうなら、私も初歩レベルだと思います。でも、それ でシステムとか作れないわけではありません。ほとんど使わないオブジェクトの プロパティなど全部は覚えられないです。分からないときは、ヘルプやインテリ センスで探すしかありません。語学の単語と同じで、頻度の上位と下位があって、 上位のものは覚えても下位のものは覚えられませんし、プログラミングでは、こ ういう下位のものは覚える必要がないのです。 実際の作業では、 >Range("A3").Select >とセルを選択した後の記述は >selection?と書いたはずなんですが、 Selection というのは、Select(選択)した結果、つまり、シートをSelect した ら、シートが入り、Range をSelectをした結果が入ります。ただ、この先、 Select --> Selection という形は、Excel VBA上では、慣れると書かなくなります。 ListObjects とオブジェクトが唐突に出てくるわけがないから、親オブジェクト が何かは、探さなくてはならないのです。しかし、また、この手のものは、記録 マクロにしか登場しないようなものなのだと思います。 よほど、いつも使っていなければ、そんなことは分かるはずがないと思います。 それと、ワークシートオブジェクトの個々のプロパティは、何年やっても覚えら れません。 実務で、エラーを出したときに、ListObjects のところで、F1 を押してみて、 ヘルプが出てきます。オブジェクトとして、親のExpression(-->オブジェクト) に何が入るのか調べる調べます。 ヘルプでは、以下のように書かれています。 # ListObjects コレクションを取得するには、Worksheet オブジェクトの # ListObjects プロパティを使用します。 それで、修正します。 また、最初からコーディングする場合は、シートモジュールで、Me(Meキーワー ド)と書いて、その次に、「.(ピリオド)」を押すとリストが出てきますから、 それで、プロパティを探す(インテリセンスといいます)しか手がないと思いま す。(残念ながら、標準モジュールでは出てきません) Me. → ListObjects あまり、細かいことを気にしないで、『かんたんプログラミング』の本を先に進 んだほうがよいです。語学の勉強と同じで、頻度というものがあって、あまり使 わないものは、覚えなくてはもよいと思います。細かいことを気にすると、最後 (『応用編』)までいくのに疲れてしまいます。 頑張ってくださいね。
お礼
Wendy02さん、締め切った後にわざわざありがとうございます。 私的にこんな情報量を頭に入れることは到底不可能だと認識しておりまして、いちいち調べながらやるものだと感じています。 その調べ方が今の段階ではわからず苦労しているしだいです。 質問の件ですが「かんたんプログラミング~」P169に、activesheet プロパティについて 「activesheetメソッド、selecメソッドでアクティブとなったシートは "activesheet"プロパティで参照できます」と記載がありました。 これをそのまま覚えるという覚え方にします。
お礼
Dxakさん回答ありがとうございます。 基礎の基礎でしたか、一通り書籍を読んではいるんですが、ちゃんと理解していなかったようです。 出直してきます。