私は現在、Calendar.xlsmというExcelスプレッドシートに取り組んでいます.Excel2010を持っています。
私のワークブックには次のワークシートがあります。
表紙
カレンダー
色検出
印刷可能
「色検出」シートは、ユーザー定義関数を使用して「カレンダー」ワークシートのセルの色を検出し、その色に基づいてその特定のセルの数値を返します。たとえば、次Calendar!C3
の塗りつぶし色がある"light green"
場合Colour Detection!C3 = 43
完全を期すために、UDF は ColorIndex と呼ばれ、Bob Phillipsによって作成されました。
次に、条件付き書式を使用して、「色検出」に格納されている数値に基づいて「印刷可能」ワークシートのセルに色を付けます。
「カレンダー」シートに色の変化があると問題が発生します。通常、これが発生すると、セルを手動で選択してリターンを押さない限り、「色検出」は変更されません。
この分野で Excel が Visual Basic とどのように連携するかについての私の知識は非常に限られていますが、増え続けています。
ソリューションの最初のアイデアは、各セルを選択してリターンを 1 つずつ選択するマクロを記録することでした。次に、 「カバーシート」の「計算」というボタンにマクロを添付しました。この UDF を使用するセルが約 800 あるため、すぐには機能しませんでした。
これを試しているときに、解決策に出くわしたと思ったのですが、解決策をいくつかのセルだけに適用すると、ワークシート全体が更新されるように見えることに気付きました。次に、これを適用して数回テストしたところ、機能しました。それから私は自分の作品を友人に傑作だと確信していたとして提示し、彼らにそれをデモンストレーションしている間、それはすべて倒れ、マクロで選択したセルだけが更新されました.
次に行を追加してみました
Application.Volatile
私のUDFにですが、これは違いはありません。
私の質問は、再計算ボタンを押すなどの簡単なことを行うことで、ワークシート内のすべてのセルを簡単に強制的に更新するにはどうすればよいですか?