• ベストアンサー

エクセル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"))

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

  • ベストアンサー
  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答No.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)") という方法もあります。

merlionXX
質問者

お礼

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

関連するQ&A