- ベストアンサー
エクセルVBA
どうして SUM(A1:A5) Range("A1:A5") のように 関数の引数には" "がいらなくて Rangeの引数には" "がいるのでしょうか?
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
そういうものなんだよ。MSが考えてそう決めたのだよ。 Sub test01() s = "A1:B5" Range(s).Select End Sub を実行してご覧。Rangeの中は文字列で指定する決まりが実感できるだろう。 しかし初めからMSがその気になって””で囲まない決めにしていたら そうできると思う。 いやなら別の方法Cells(i,"A")という書き方やRange(Cells(1,"A"),Cells(5,"B"))なんてのもあり、Cells(3)などというのもある。 基本的に引数は、スクリプトでは文字列でという主義もあるような気がする。テキストエディタはテキストベースでもあるし。 ーー エクセル関数の場合はVBAと比較するのは無意味(違う)。 関数ではセル範囲は文字列を明示する風に””では囲まない。 関数式は、エクセルシステムはとりあえず文字列で受けているはずだが。 文字列をリテラルで指定するときにだけに””で囲む。 LOTUS以前から表計算ソフトの沿革を引きずっているし、省略できる ものは省略した方が能率的である。 INDIRECT関数やクライテリアに文字列で指定を強制したり、などに不統一を感じたことがある。
お礼
ありがとうございました。やっと疑問が解けました。