街中で見かけて「グッときた人」の思い出

matyuといいます。よろしくお願い致します。

初歩的な質問ですが、参考にしている書籍は「大村あつし 著 かんたんプログラミングexcel2003VBA 基礎編」ですが

データベースをリストに追加するというところで少々疑問に思うところがあるので質問させていただきます。
------------------------------------------------------------
P236
Sub SetListName()
Range("A3").Select
ActiveSheet.ListObjects.Add.Name = "会員リスト"
------------------------------------------------------------
今まで
Range("A3").Select
とセルを選択した後の記述は
selection~と書いたはずなんですが、なぜこのlistobjectsではactivesheetなんでしょうか?
これが決まりなんでしょうか?
因みに、selectionにしたらエラーがでました
できればその理由が知りたいとおもいましたので書き込みしました。
書籍での見落としでしたらすいません
よろしくお願い致します。

A 回答 (2件)

こんばんは。



私は、真面目に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

あまり、細かいことを気にしないで、『かんたんプログラミング』の本を先に進
んだほうがよいです。語学の勉強と同じで、頻度というものがあって、あまり使
わないものは、覚えなくてはもよいと思います。細かいことを気にすると、最後
(『応用編』)までいくのに疲れてしまいます。

頑張ってくださいね。
    • good
    • 0
この回答へのお礼

Wendy02さん、締め切った後にわざわざありがとうございます。

私的にこんな情報量を頭に入れることは到底不可能だと認識しておりまして、いちいち調べながらやるものだと感じています。
その調べ方が今の段階ではわからず苦労しているしだいです。
質問の件ですが「かんたんプログラミング~」P169に、activesheet
プロパティについて
「activesheetメソッド、selecメソッドでアクティブとなったシートは
"activesheet"プロパティで参照できます」と記載がありました。
これをそのまま覚えるという覚え方にします。

お礼日時:2009/03/11 21:10

単純な話だと・・・



Selectionは、一般には、Rangeオブジェクトを戻す
で、ListObjectsプロパティは、Worksheetオブジェクトの子
(ただし、Excel2003以降のものに限る、Excel2002には、ありません)

「Range("A3").Select」の後に来る「Selection」は、「A3」のRangeオブジェクトだからだと・・・

かなり基礎的な話で、オブジェクトの親と子の関係が、判らないと、質問者さまのような質問になります
    • good
    • 0
この回答へのお礼

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

基礎の基礎でしたか、一通り書籍を読んではいるんですが、ちゃんと理解していなかったようです。
出直してきます。

お礼日時:2009/03/04 19:05

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