dポイントプレゼントキャンペーン実施中!

Excel VBAについて。

以下の2つのコードは違いがありますか?

1. Range("A1").Value = 1
2. Range("A1")= 1

結果は同じですが、1.の方が推奨なのでしょうか?
初歩的な質問で恐縮ですが、よろしくお願いします。

A 回答 (3件)

> 以下の2つのコードは違いがありますか?


VBAにおいてはありません。私も面倒になってよく省いてしま
います。ただこれを「同じ」とは思いませんし どちらが良いか
については議論の余地すらないと思います。

田中亨氏の説明ページについては 批判的な意見を時々耳にしま
す。 「省略することが許されています」という考え方には首肯
しかねるものがあります。

これでいいなら VLOOKUPの第四引数は「FALSE」の代わりに
「0」を使うことが「許されている」という話になります。
教える立場の人が そんな論調ではいかんでしょう。

自戒の念も込めて省略せずに書くことを推奨します。
    • good
    • 0

こんばんは。



今は、VBAはほとんど書いていませんが、それは、基礎的なことですから、少し書かせていただきます。

>2. Range("A1")= 1

これを「暗黙のプロパティ」といって、Valueプロパティがあるとみなされます。
しかし、私は、旧VBでやっていた経験では、その「暗黙のプロパティ」が、オートメーション・オブジェクトで利かない時が生じます。エラーが生じるのです。

Office Tanakaの田中亨氏は、どういう勉強をしていたかは知りませんが、彼の書く内容は、プログラマーの経験はないようですから、そういう点で、おかしな内容のものが多いです。彼は、MicrosoftのVBAの教科書(『Microsoft Office プログラマーズガイド』)のどこに、RangeやCells に.Valueプロパティを省略したコードを載せていたことがあるでしょうか。

彼が書いている
>省略すると○○とみなすというプロパティを標準のプロパティ
というのは、おそらく、Default Property(デフォルト・プロパティ) のことだと思いますが、少なくとも私の知っている限りでは違います。それは、別のものです。

>Valueプロパティを省略すべきか、すべきでないかは、意見が分かれるところです。また、明確な正解もありません。
>私は、どちらでもいいと思います。それよりも、大事なことはValueプロパティを省略しているんだと認識することです。

冗談のようなことを書いています。こんなことを言ったら、身も蓋もありません。プログラマーとしての、プロパティの認識の問題ですが、自分は、.Valueプロパティを選ぶのか、.Value2 を選ぶのか、.Text を選ぶのかという選択の中で、.Valueプロパティを選んだという意思決定が含まれているのです。いいかげにしないほうが、エラーなどから回避できるのです。

どちらでもよいというのは、初心者だけの話で、あるレベルに達したら、省略してよいということはありません。
    • good
    • 0

こんばんは!



最初の段階では丁寧に(1)のように記述するのが好ましいと思いますが、
「.Value」を省略するとExcelは自動的に「.Value」が省略されている!と判断してくれるようです。

当方がココで説明するより↓のサイトが参考になると思います。m(_ _)m

http://officetanaka.net/excel/vba/beginner/08.htm
    • good
    • 0

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