Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


2858 / 13644 ツリー ←次へ | 前へ→

【65544】自作関数の自動計算について おかたか 10/6/4(金) 11:39 質問[未読]
【65545】Re:自作関数の自動計算について mura 10/6/4(金) 12:38 回答[未読]
【65575】Re:自作関数の自動計算について 独覚 10/6/10(木) 13:37 発言[未読]

【65544】自作関数の自動計算について
質問  おかたか  - 10/6/4(金) 11:39 -

引用なし
パスワード
   自作関数の中に Application.Volatile を実行して
自動計算する様にしています。
自作関数を実行しているシートではセル値変更後
正常に自動計算しますが、別のシート(シート2)で自作関数を
実行しているセルを参照しシート2のセル値を変更すると
値が0に戻ってしまいます。

なぜでしょうか?わかる方お願いします。

【65545】Re:自作関数の自動計算について
回答  mura  - 10/6/4(金) 12:38 -

引用なし
パスワード
   >なぜでしょうか?

たぶんユーザー関数のコードがまずいからではないでしょうか。
通常はApplication.Volatileを用いないで自動計算するように作ります。

【65575】Re:自作関数の自動計算について
発言  独覚  - 10/6/10(木) 13:37 -

引用なし
パスワード
   実際のVBAを書かれた方が早いかと思いますが、例えば

Function Ex_SUM(W_Range As String)
  Application.Volatile
  Ex_SUM = Application.WorksheetFunction.Sum(Range(W_Range))

End Function
という自作関数(範囲を文字列で与えた場合にその範囲の合計を返す)があったとして。

Sum内でRangeの親になるシートを指定していないため計算を行うときのアクティブシート内の
セルを対象としてしまいます。

なので例えばシート1に「=Ex_SUM("A1:A5")」のように式を入力したときにはシート1の
A1:A5セル範囲の合計を求めてくれますがシート2に何か入力したりするとその時点で
シート2のA1:A5セルの合計になってしまいます。

多分似たようなことが起こっているのではないでしょうか?

2858 / 13644 ツリー ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free