Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


8310 / 13644 ツリー ←次へ | 前へ→

【34033】valueプロパティの使用方法 mam 06/1/25(水) 12:00 質問[未読]
【34035】Re:valueプロパティの使用方法 やっちん 06/1/25(水) 13:53 発言[未読]
【34038】Re:valueプロパティの使用方法 mam 06/1/25(水) 14:20 お礼[未読]
【34036】Re:valueプロパティの使用方法 inoue 06/1/25(水) 14:01 発言[未読]
【34039】Re:valueプロパティの使用方法 mam 06/1/25(水) 14:31 お礼[未読]
【34040】Re:valueプロパティの使用方法 mam 06/1/25(水) 14:43 お礼[未読]
【34041】Re:valueプロパティの使用方法 やっちん 06/1/25(水) 14:55 発言[未読]
【34054】Re:valueプロパティの使用方法 inoue 06/1/25(水) 17:16 発言[未読]
【34083】Re:valueプロパティの使用方法 mam 06/1/26(木) 9:09 お礼[未読]

【34033】valueプロパティの使用方法
質問  mam  - 06/1/25(水) 12:00 -

引用なし
パスワード
   いつもお世話になっています。VBAまだまだ勉強中です。

基本的なことなのですが、過去Q、HELPなどを見てもどうにも理解できず、
お訊ねに伺いました。

VALUEは値の参照、設定という事は何となくわかっているつもりなのですが、コード記載でVALUEを使用してもしなくても、代入が出来ています。私自身の
コードはほとんどVALUEを使用していません。

けれど、以前に「出来るだけ使用したほうが良い」と書き込みを見かけ、また、此方でも大半が値の受け渡しにVALUEを使用されているようです。
なぜ、VALUEを指定した方が良いのでしょうか?
指定しないと何らかの弊害(?)があるのでしょうか?
また、どんな時には指定すべきなのでしょうか?

よろしくお願いいたします。

【34035】Re:valueプロパティの使用方法
発言  やっちん  - 06/1/25(水) 13:53 -

引用なし
パスワード
   ▼mam さん:
省略したときはVALUEプロパティが既定で設定されるとどこかで聞いたことがあります。
オブジェクト参照の代入などそれを知るまでRANGE()が値を指しているのかオブジェクトを指しているのか混乱していました。今は理解していますが(^^;
明示的にした方が値の受渡だとわかりやすいので私もVALUEを付けるようにしています。

【34036】Re:valueプロパティの使用方法
発言  inoue E-MAILWEB  - 06/1/25(水) 14:01 -

引用なし
パスワード
   こんにちは。

>なぜ、VALUEを指定した方が良いのでしょうか?
>指定しないと何らかの弊害(?)があるのでしょうか?
>また、どんな時には指定すべきなのでしょうか?
オブジェクトには「既定のプロパティ」というものがあって、
プロパティを省略した時にはその「既定のプロパティ」が参照されます。
ですが、何が「既定のプロパティ」なのかは
ヘルプ等にも明記されていません。
明らかに「Value」なのだと分かっているなら
省略しても良いでしょうが、
知らないのに省略するのはいかがなものでしょうか。
ということで「明記」を勧める記述が多いのだと思います。

もう一つは「誤記」の防止です。
データ型を明記して変数宣言していれば良いのですが、
例えば、
Dim objR
objR = Range("A1")
と記述されていたらobjRには何が入りますか?
Set objR = Range("A1")
だったらどうなりますか?
「Set」を忘れるだけで大違いですが、
プロパティを明記するようにしていれば、
記述差にすぐに気が付くので
バグ発見が早いのではないか、との期待も持てると思います。

【34038】Re:valueプロパティの使用方法
お礼  mam  - 06/1/25(水) 14:20 -

引用なし
パスワード
   ▼やっちん さん:

ご解説ありがとうございます。

>省略したときはVALUEプロパティが既定で設定されるとどこかで聞いたことがあります。
>オブジェクト参照の代入などそれを知るまでRANGE()が値を指しているのかオブジェクトを指しているのか混乱していました。今は理解していますが(^^;
>明示的にした方が値の受渡だとわかりやすいので私もVALUEを付けるようにしています。

 既定がVALUEになっているから、私の現状コードでは不具合が承じていなかったのかもしれません。
 VBAはまだ何分理解できずに業務に駆られ作成している様な状況ですので、これからもっと理解を深めるよう努力します。
 今後はVALUEを使用するようにします。

【34039】Re:valueプロパティの使用方法
お礼  mam  - 06/1/25(水) 14:31 -

引用なし
パスワード
   ▼inoue さん:

 ご解説ありがとうございます。

>オブジェクトには「既定のプロパティ」というものがあって、
>プロパティを省略した時にはその「既定のプロパティ」が参照されます。
>ですが、何が「既定のプロパティ」なのかは
>ヘルプ等にも明記されていません。
>明らかに「Value」なのだと分かっているなら
>省略しても良いでしょうが、
>知らないのに省略するのはいかがなものでしょうか。
>ということで「明記」を勧める記述が多いのだと思います。

 規定値との事承知いたしました。


>
>もう一つは「誤記」の防止です。
>データ型を明記して変数宣言していれば良いのですが、
>例えば、
>Dim objR
>objR = Range("A1")
>と記述されていたらobjRには何が入りますか?

 ↑ A1セルの値でしょうか?

>Set objR = Range("A1")
>だったらどうなりますか?

 ↑ A1セルそのもの(オブジェクト)でしょうか?

>「Set」を忘れるだけで大違いですが、
>プロパティを明記するようにしていれば、
>記述差にすぐに気が付くので
>バグ発見が早いのではないか、との期待も持てると思います。

 なんとも、情けない話ですがマクロを業務上やむ得ず私が作っている様な
状況で毎度、試行錯誤で「取り合えず動くもの」にしています。

 VBAなるものの駆け出しに
inoue さんのサイトを手引きに始めました。まだまだ理解出来ていないことの方が
多く奮闘中ですが、がんばって覚えていきたいと思っております。

【34040】Re:valueプロパティの使用方法
お礼  mam  - 06/1/25(水) 14:43 -

引用なし
パスワード
   >>オブジェクトには「既定のプロパティ」というものがあって、
>>プロパティを省略した時にはその「既定のプロパティ」が参照されます。
>>ですが、何が「既定のプロパティ」なのかは
>>ヘルプ等にも明記されていません。
>>明らかに「Value」なのだと分かっているなら
>>省略しても良いでしょうが、
>>知らないのに省略するのはいかがなものでしょうか。
>>ということで「明記」を勧める記述が多いのだと思います。
>
> 規定値との事承知いたしました。

 何が規定値かはオブジェットによってわからないとの事ですね。
失礼致しました。

【34041】Re:valueプロパティの使用方法
発言  やっちん  - 06/1/25(水) 14:55 -

引用なし
パスワード
   ▼mam さん:
> 何が規定値かはオブジェットによってわからないとの事ですね。
>失礼致しました。
私はRANGE限定での話をしていたので
誤解を招いてすいません。

【34054】Re:valueプロパティの使用方法
発言  inoue E-MAILWEB  - 06/1/25(水) 17:16 -

引用なし
パスワード
   > 何が規定値かはオブジェットによってわからないとの事ですね。
そうです。
別にRangeでは省略して、他は必ず記述するということではないですよね。
省略するという方は他のオブジェクトでも省略するのでしょう。

Rangeオブジェクトにしても、
「既定のプロパティはValueです」とは説明されておらず、
経験的に「Valueだろう」と思って使っているだけで、
私などはバージョンによって違うかもと不安なので
必ず省略せずに記述しています。

【34083】Re:valueプロパティの使用方法
お礼  mam  - 06/1/26(木) 9:09 -

引用なし
パスワード
   おはようございます。お返事が遅くなりましてすみません。

お二方の親切なご解説で、仕様はおぼろげな感じではありますが、
「指定することが好ましい!」と言うことがわかりました。
ちょっとだけですが、賢くなった(??)気分です(^_^)。
ありがとうございました。

8310 / 13644 ツリー ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free