次の方法で共有

excel2013 ユーザー関数 自動計算しない

Anonymous
2016-01-03T17:29:28+00:00

単位換算のユーザー関数は自動計算されますが、開いてるブックを調べる関数が

自動計算されません。

      Application.Volatile

を挿入しても自動計算されません。

  Function IsBookOpen(BookName) As Boolean

      Application.Volatile

      Dim bk As Workbook

      IsBookOpen = False

      For Each bk In Workbooks

          If bk.Name = BookName Then

              IsBookOpen = True

      Exit For

          End If

      Next

  End Function

そもそも上記関数は自動計算されない関数なのでしょうか。

よろしくお願いします。

開発者テクノロジ | Visual Basic for Applications

ロックされた質問。 この質問は、Microsoft サポート コミュニティから移行されました。 役に立つかどうかに投票することはできますが、コメントの追加、質問への返信やフォローはできません。

0 件のコメント コメントはありません

質問作成者が受け入れた回答

Anonymous
2016-01-07T09:44:52+00:00

もしかして、この関数を使うさい、

=isbookopen("yyy")

のように、ファイル名だけを使われてませんか?

=isbookopen("yyy.xlsx")

にしてみてください。

ただし、このVolatileってのは結構厄介で、なにか変る度に呼ばれます。

変わる度ってことなんでしょうが、テストした、このマクロだけを入れて、手動で対象ブックを開いた場合3回くらい呼ばれているようです。

ですから、実際に関数は正しく動いていても、一度正しく値がセットされ、それから更に呼ばれて値が変わりおもってらっしゃるのと違う結果が残るなんてことが普通に起こります。

具体的な例は覚えてませんが昔Volatileで理解不能な動きに見えて納得するまでに大汗をかいたことがあります。

もし、ファイル名を拡張子まで入れておられるのでしたら、↑の現象を疑う必要がありそうです。

参考まで。

この回答は役に立ちましたか?

0 件のコメント コメントはありません

2 件の追加の回答

並べ替え方法: 最も役に立つ
  1. Anonymous
    2016-01-09T03:20:17+00:00

    有難うございました。

    現在72歳でVBAを始めました。独学です。構文はマクロやインターネットの参考構文を教科書としています。

    ご回答をいただき、私の質問が全くの勘違いだと気が付きました。

    今一度、考えに考え抜きたいと思います。

    本当にありがとうございました。

    この回答は役に立ちましたか?

    0 件のコメント コメントはありません
  2. Anonymous
    2016-01-07T06:06:23+00:00

    ​幼児老 さん、こんにちは。

    マイクロソフト コミュニティをご利用いただき、ありがとうございます。

    Excel 2013 のユーザー関数で、開いているブックを調べる関数が自動計算されないということなのですね。

    作成しているコードから参考となる情報がないかお調べしましたが、探した範囲では有力な情報が見つかりませんでした。

    当フォーラムでは Excel の使い方やトラブルについて情報交換が多く行われているため、 VBA に関しての質問は情報がなかなか集まりにくいかもしれません。

    開発者の方々が情報交換を行っている VBA フォーラムがありますので、こちらに質問を投稿し、情報を集めてみてはいかがでしょう。

    Msdn フォーラム - Visual Basic for Application(VBA)

    違うフォーラムのご紹介のみとなってしまい、ごめんなさい。

    返信お待ちしています。

    この回答は役に立ちましたか?

    0 件のコメント コメントはありません