| 
    
     |  | おはようございます。 
 現象をExcel2002で確認しました。
 
 再現手順
 
 ・新規ブックの標準モジュールに
 
 '============================================
 Function siki(rng As Range) As Boolean
 siki = rng.HasFormula
 End Function
 
 を記述します。
 
 
 ・Sheet1のシートにて、セルA1を選択します。
 
 ・選択した状態で「書式」----「条件付書式」とクリックして、
 「条件付き書式の設定」ダイアログを表示させます。
 
 ・ここで条件を設定します。「セルの値が」と表示されているコンボボックスを
 「数式が」に変更します。
 
 ・上記のコンボボックスのすぐ右隣にあるテキストボックスに
 「=siki(a1)」と入力します(両端の「」は除く)。
 
 ・書式ボタンをクリックして「パターン」タブで色として赤を選択して
 OKボタンをクリックしてください。再度、「条件付き書式の設定」ダイアログに
 戻りますから、OKボタンで設定を終了してください。
 
 これで、準備完了です。
 
 試しにSheet1のセルA1に「=a2」と入力してみてください。
 セルA1が赤く塗りつぶされるはずです。
 
 
 ・Sheet1のセルA1に「aaa」と入力してください(両端の「」は除く)。
 塗りつぶしが消えますよね!!
 
 ・Sheet2のシートを選択してください。
 
 ・セルD2に 「=」(両端の「」は除く)を入力した状態
 (カーソルはセルD2内で点滅している状態)でSheet1のセルA1を
 選択します。
 
 ・Sheet1のセルA1は、破線で囲まれ、数式バーには、「=Sheet1!A1」と表示されています。
 
 ・このまま、確定のEnterキーを押してください。
 
 この時の結果はまちまちですが、少なくともSheet2のセルD2には、
 何も入力されていないという現象になりました。
 
 代わりにSheet1のセルD2に #REFになる場合もありましたし、
 
 また、Sheet1のセルA1の結果を参照している場合もあります。
 このときは、Sheet1のD2には「=Sheet1!A1」と入力されています。
 
 ユーザー定義関数 siki に何らかの問題がありそうですねえ!!
 
 
 新規ブックの標準モジュールに
 
 '===========================================================
 Sub main()
 Application.Names.Add "hformula", , , , , , , , , "=get.cell(48,rc)"
 With Worksheets("sheet1").Range("a1:z100")
 .FormatConditions.Delete
 .FormatConditions.Add Type:=xlExpression, Formula1:="=hformula"
 .FormatConditions(1).Interior.ColorIndex = 3
 End With
 End Sub
 
 
 シートSheet1をアクティブにして、mainを実行してみてください。
 
 上記のコードはSheet1のセルA1:Z100のセル範囲に対して、
 数式が入っていれば、赤く塗りつぶす条件付き書式を設定しています。
 
 
 これで同じようにSheet2のセルD2から「=」と入力して
 Sheet1のセルA1を参照してみてください。
 
 今度は、正しくSheet2のD2に数式が反映されるはずです。
 
 試してみてください。
 
 
 |  |