• ベストアンサー

エクセルVBA

どうして SUM(A1:A5) Range("A1:A5") のように 関数の引数には" "がいらなくて Rangeの引数には" "がいるのでしょうか?

質問者が選んだベストアンサー

  • ベストアンサー
  • imogasi
  • ベストアンサー率27% (4737/17069)
回答No.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関数やクライテリアに文字列で指定を強制したり、などに不統一を感じたことがある。

karasu4649
質問者

お礼

ありがとうございました。やっと疑問が解けました。

関連するQ&A