|
おはようございます。
現象を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に数式が反映されるはずです。
試してみてください。
|
|