プロが教えるわが家の防犯対策術!

以下のVBAはどれもまったく同じ答えを返しますが、どのような違いがあるのでしょうか?
違いがないなら一番短い書き方をしようと思います。
よろしくお願いします。

MsgBox Application.WorksheetFunction.Sum(Range("C21:C23"))
MsgBox WorksheetFunction.Sum(Range("C21:C23"))
MsgBox Application.Sum(Range("C21:C23"))

A 回答 (1件)

MsgBox Application.WorksheetFunction.Sum(Range("C21:C23"))


MsgBox WorksheetFunction.Sum(Range("C21:C23"))
MsgBox Application.Sum(Range("C21:C23"))

>ans= Application.WorksheetFunction.Sum(Range("C21:C23"))
>ans= WorksheetFunction.Sum(Range("C21:C23"))

この2つは、基本的には同じですね。これは、97以上の書法です。Application を省略しても、ワークシート関数は使えます。しかし、Sum関数の引数にエラー値があると、両方とも「実行時エラー」になるはずです。VBAで回避するためには、On Error トラップが必要になりますね。

>ans = Application.Sum(Range("C21:C23"))
こちらは、古いVersionの書き方ですが、エラー値そのものが、上記の場合は、ans に返るはずです。ただし、ansは、変数型はVariant 型です。
どちらでも良いと思います。

なお、短くするなら、
ans = Evaluate("Sum(C21:C23)")
という方法もあります。
    • good
    • 1
この回答へのお礼

早速ありがとうございました。
Evaluate("Sum(C21:C23)")という呪文もあるんですね。文字列で入力した式を計算させるんですね!勉強になりました。

お礼日時:2005/04/21 09:27

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

このQ&Aを見た人はこんなQ&Aも見ています