人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

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

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

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



●質問者: kaiketsu
●カテゴリ:コンピュータ 科学・統計資料
✍キーワード:A1 application VB VBA エクセル
○ 状態 :終了
└ 回答数 : 4/4件

▽最新の回答へ

1 ● kn1967
●1ポイント

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

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

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


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

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

平均を計算する処理

Else

データが無い場合の処理

End If

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


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

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

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

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


2 ● SALINGER
●1ポイント

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

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/


3 ● hijk05
●1ポイント

Range("A1:A100")

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

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

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


4 ● ひろさん
●100ポイント ベストアンサー

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

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

http://q.hatena.ne.jp

◎質問者からの返答

ばっちりです。

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ