- ベストアンサー
「標準のプロパティ」について、
http://officetanaka.net/excel/vba/beginner/08.htm を読んだのですが、 ヘルプやオブジェクトブラウザで どのプロパティが標準のプロパティか確認することはできないのでしょうか? 添付画像のようにオブジェクトブラウザでは確認できませんでした。 「rangeオブジェクトは標準のプロパティは、valueだ」と 頭で覚えるしかないのでしょうか?
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
こんばんは。 >「rangeオブジェクトは標準のプロパティは、valueだ」と >頭で覚えるしかないのでしょうか? 別に、区分けする必要はないと思います。ふつうに入れればよいのです。 >どのプロパティが標準のプロパティか確認することはできないのでしょうか? VBAのプロになるつもりなら別ですが、入門でも、中級でも必要ありません。そのデフォルト化は、当たり前のようではあるけれども、MS側が決めたことであって、それは、明示されていません。ただ、長い間コードを書いていれば、その戻り値で分かりますが、正しい書き方をしていれば、そのようなことを考える必要ないと思います。 いつも疑問に思っていることですが、Office Tanaka の田中という人は、変な教え方をします。 ・Valueってつけなくてもいいの?(http://officetanaka.net/excel/vba/beginner/08.htm) 田中氏いわく『私は、どちらでもいいと思います。それよりも、大事なことはValueプロパティを省略しているんだと認識することです。プログラマは、すべての行や命令について「なぜそうしたか」を説明できなければいけません。』 これはヘンです。そもそも省略することと、その命令の説明と、どうつながるのでしょうか。それに、なぜ、省略しているという認識が必要なのでしょう。書かれたコードがすべてであって、自分の認識などは直接はコードには反映しません。コードで判定されます。私は、Valueプロパテイが抜けたものなどは、まったくの素人が書いたものだとして信用しません。 どなたか、それは、インタープリター言語だから、と言い訳しましたが、それもヘンです。これは、VBSを書いているわけではありません。(VBAは、一旦、中間言語に置き換わるのです) 私が、.Value を入れるのは、いくつかあるコーディングルールの一つなのです。 もうひとつは、.Valueプロパティを入れていないと、オートメーションの場合に、エラーを起こす可能性があるからです。言い換えると、自動的に、.Valueプロパティと認識されないことがあるということです。時には入れて、時には省略してなどというスタイルは存在しません。 時々、美的感覚とかを持ち出す人がいますが、そういう人は置いておいて、私は、あえて可読性の問題だとは言いません。設計の考え方の問題で、Value を入れていないと、格好がつかないのは、.Text プロパティや、Value2 を参照することがあるからです。つまり、「明示的」に使っているのだということです。それを、Value プロパティだけ省略というのは、ヘンだと思います。また、With ステートメントを入れた時に、.Value と使わずに表現することはできません。 Office97 の時代に、Microsfot プログラマーズガイドの中で、コーディングスタイルとして、Microsoft 側が提示したサンプルコードでは、省略しないスタイルを取ったのです。それ以来、多くのプログラマは、省略しないスタイルを取ってきました。 ちなみに、プロジェクトAの井川はるきさんも、同じようなことを言っています。 「デフォルトメンバが引き数を取らない場合には、メンバを省略すると、オブジェクトを指しているのか、デフォルトメンバを指しているのかわかりにくいため、可読性の向上と、思わぬ不具合を防ぐ目的で、きちんとメンバ(Valueプロパティ)を記述するのが通例だ(括弧内一部省略)」 と言っています。
お礼
プロになりたいけどまだまだです。 だから基礎から学ぼうと思ってます。 眼で見て覚えるのではなく慣れですね。 >書かれたコードがすべてであって、 自分の認識などは直接はコードには反映しません。 コードで判定されます。 私もこのような考え方の方が好きです。 Valueプロパティがない事によって、 エラーが発生する場合もあるのですか。 ではやはりValueプロパティはあった方が良いですね。 >With ステートメントを入れた時に、.Value と使わずに表現することはできません。 言われるまで気づきませんでしたが、確かにそうですね。 井川はるきさんの件も参考になりました。ありがとうございました。