すぐマク YNxv926 Home | Search | Contents | Gallery | Introduction | Service | Support | What's New!
ユーザー関数を自動再計算関数にするには? Click Here!
Question 42.4 ブックシート Excel VBA Borad (掲示板)より Previous Next
ユーザー関数を使って、シートの羅列されているデータを検索して、取り出そうとしています。
シート s_indexのA列にキー部分のデータを作成してあって、シート s_dataにデータがあります。 こんな関数です。
Function Kensaku(f_Jcd, f_Kamoku, f_retsu)
Dim W_Index As String, W_Match As Single, W_Kekka As Single
    On Error GoTo NASHI
    W_Index = f_Jcd & f_Kamoku
's_indexのA列から一致する行をさがす。
    W_Match = Application.WorksheetFunction. _
                Match(W_Index, Worksheets("s_index").Range("A:A"), 0)
    Kensaku = Application.WorksheetFunction. _
                Index(Worksheets("s_data").Range("a1:by6500"), W_Match, f_retsu)
    Exit Function
'検索不可能な場合
NASHI:
'   なしの処理
End Function
中身はこんなもので、関数としては動きますが Excel2000で動かすと、再計算ができないんです。
Micrsoftサポートには、「ユーザー定義関数内で名前作成した場合の再計算について」という題で、index関数を使うとできないみたいな感じなのですが、何かいい方法はないでしょうか?
Answer  Excel 97以上 2001.6.6 ムラジロ〜
中身は見ていませんが
    Application.Volatile
を頭に入れてもダメでしょうか?
Volatileメソッド 【注:WebMaster】

ユーザー定義関数を自動再計算関数にする。この関数にしておくと、セルで計算が行われるたびに再計算される。

構文
expression.Volatile(Volatile)

expression  Applicationオブジェクトを表すオブジェクト式を必ず指定する
Volatile   True : 自動再計算関数(規定値)、 False :非自動再計算関数

ユーザー定義関数の中(冒頭)に記述する。
できました 2001.6.6 質問者より
ムラジロ〜さんありがとうございました。もっと勉強します。
http://www.geocities.jp/happy_ngi/ Home | Contents | Gallery | Introduction | Service | Support | What's New!

Click here to visit our sponsor