- ベストアンサー
エクセルVBAでApplication.SumとWorksheetFunction.Sum
以下のVBAはどれもまったく同じ答えを返しますが、どのような違いがあるのでしょうか? 違いがないなら一番短い書き方をしようと思います。 よろしくお願いします。 MsgBox Application.WorksheetFunction.Sum(Range("C21:C23")) MsgBox WorksheetFunction.Sum(Range("C21:C23")) MsgBox Application.Sum(Range("C21:C23"))
- みんなの回答 (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)") という方法もあります。
お礼
早速ありがとうございました。 Evaluate("Sum(C21:C23)")という呪文もあるんですね。文字列で入力した式を計算させるんですね!勉強になりました。