VBAの中で、エクセル関数が使えません。例題には使えるように書いてあるのですが、


Application.WorksheetFunction.Average (Range("A1:A100"))

VBエディターから実行すると、worksheetFunction の average メソッドが失敗しましたとでます。
エクセルのシートからマクロ実行しないといけないのでしょうか?

回答の条件
  • URL必須
  • 1人2回まで
  • 登録:2009/03/30 14:57:41
  • 終了:2009/04/04 06:46:09

ベストアンサー

id:suttanipaata No.4

ひろさん回答回数6ベストアンサー獲得回数12009/03/31 22:06:57

ポイント100pt

標準モジュール(デフォルトでModule1)に書いていませんか?

Sheet1などのシートオブジェクトをダブルクリックして開くところに書いてみてください。

http://q.hatena.ne.jp

id:kaiketsu

ばっちりです。

2009/04/04 06:44:14

その他の回答(3件)

id:kn1967 No.1

kn1967回答回数2915ベストアンサー獲得回数3012009/03/30 15:49:49

ポイント1pt

範囲内にデータが無い場合だと

ワークシート上でも#Value!というエラーになりますので

まずはワークシート上でaverageの動作を確認してみてください。


データが無いとエラーになるのですから

If Application.WorksheetFunction.Sum(Range("A1:A100")) > 0 Then

  平均を計算する処理

Else

  データが無い場合の処理

End If

などといった具合に「事前にデータの有無を確認」する必要があったりします。


※ON ERROR などで強制的にエラーを無視する方法もありますけど

自分のプログラミングミスなのか、それとも何らかの不具合を起こしたのか

そもそも、どこが問題なのかを見分けるのが難しくなるためお勧めはしません。

http://hatena.ne.jp/ダミー

id:SALINGER No.2

SALINGER回答回数3454ベストアンサー獲得回数9692009/03/30 17:05:00

ポイント1pt

たぶん、そのまま実行したからだと思います。

Application.WorksheetFunction.Average (Range("A1:A100"))

これは、セル範囲の平均値を反すワークシート関数で、間違ってはいないのですが、

Msgbox Application.WorksheetFunction.Average (Range("A1:A100"))

i = Application.WorksheetFunction.Average (Range("A1:A100"))

のように、取得した値を表示したり、代入するという処理がないとエラーとなります。

見当違いならば申し訳ありません。

http://q.hatena.ne.jp/

id:hijk05 No.3

hijk05回答回数1307ベストアンサー獲得回数232009/03/30 17:33:39

ポイント1pt

Range("A1:A100")

の書き方がまずいです。シートからちゃんと指定しないとエラーになります。

以下のURLを参考にしてください。

http://msdn.microsoft.com/ja-jp/library/dd606362.aspx

id:suttanipaata No.4

ひろさん回答回数6ベストアンサー獲得回数12009/03/31 22:06:57ここでベストアンサー

ポイント100pt

標準モジュール(デフォルトでModule1)に書いていませんか?

Sheet1などのシートオブジェクトをダブルクリックして開くところに書いてみてください。

http://q.hatena.ne.jp

id:kaiketsu

ばっちりです。

2009/04/04 06:44:14

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません