|
▼シンゴ さん:
おはようございます。
>こんばんは。ご教示ありがとうございました。
>1度実行すると、その後はいつでも変更箇所が表示されるのですねぇ。
>ですが,本番環境で実行するとうまくいきません。
動作しない場合は、「うまくいきません」という一言で
終わらせないようにして下さい。
この「うまくいきません」という現象の詳細を記述してください。
例えば、本番環境にtestというプロシジャーのコード修正したと思いますが、
どこを修正したのか? つまり、コードの提示
作動させたtestというプログラムの動作に異常があったのか?
(エラーが発生したら、その詳細情報)
あるいは、testは正常に作動したが仕様どおりに値を変更しても文字が赤くならないのか?
この場合は、testというコードは条件付書式を設定しているコードです。
手動操作でも可能な事を説明を省略するためにコードで記述しています。
条件付書式が作動した例と失敗している例ではどうのように違うのか調べてみる事です。
・名前の定義が正しく設定されているか?
・条件付書式が正しく設定されているか?
といってもこの2点ですけどね!!
コードは難しいロジックを使っているわけではありません。
HELPを使って一行一行調べてみてください。
>
>>Sub test()
>>Const s1 = "ワークシート1" →シート名を定義
>>Const s2 = "ワークシート2" →シート名を定義
>
>>Worksheets(s1).Activate →シートs1をアクティブにする
>>Names.Add Name:="sht2", RefersTo:="=" & s2 & "!rc"→ここが良く...
' sht2 という名前で
' ワークシート1のアクティブなセルのアドレスをワークシート2のセルとして
'相対番地を登録しています。
' 例 ワークシート1のA1がアクティブであれば、sht2にはワークシート2!A1が登録
' ワークシート1のc1がアクティブであれば、sht2にはワークシート2!c1が登録
'つまり、ワークシート1の基準になるセルが変われば
' sht2で定義されたセルも随時変わっていきます。
'Excelの特徴を利用した名前の定義です。
>>With Worksheets(s1)
>>With .Range("a1:ad340")
>>With .FormatConditions
>>.Delete
>>.Add xlCellValue, Operator:=xlNotEqual, _ →ここもいまいち...
>>Formula1:="=sht2"
'ここで条件付書式の設定を行っています。
'セル範囲A1:AD340がワークシート2の対応するセルの値と同じでなかったら、
'文字を赤くする という設定を行っています
>>End With
>>.FormatConditions(1).Font.ColorIndex = 3
>>End With
>>End With
>>End Sub
本番環境での設定された名前の定義、条件付書式をよく調べてみてください。
それと私の例題で、作動して本番環境では作動しない原因として
これは、まだ記述されていないシートの違いがあるのかもしれません
新規ブックのシートと本番環境でのシート 何がどこが違うのか
違いをすべて洗い出すことです。
|
|