は、1秒の色の変化のためにあなたはそれが(ない別々のモジュール内)に適用するワークシートのコードにこれを追加します。
Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, Range("E:F")) Is Nothing Then
Target.Interior.ColorIndex = 2
Application.Wait (Now + #0:00:01#)
Target.Interior.ColorIndex = 46
End If
End Sub
か1秒未満の変更では、application.wait
は1秒より細かい時間は処理しませんが、timer
は以下のバージョンを使用してください。
Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, Range("E:F")) Is Nothing Then
Dim x As Single
x = Timer
While Timer - x < 0.5
Target.Interior.ColorIndex = 2
Wend
Target.Interior.ColorIndex = 46
End If
End Sub
のColorIndex値は白とオレンジのデフォルトのためのものです。探している特定の色に変更するには、http://dmcritchie.mvps.org/excel/colors.htm
EDIT - 下の新しい回答をご覧ください。上記の元の答え。
これはちょっと面倒な方法ですが、あなたがしたいことを達成する必要があります。
にあなたが変化を監視していた細胞の数をカバーするために10に1を調整し、モジュールにこれを貼り付けますので、すべてのセル参照を調整し、あなたはThisWorkbookのコード領域にこれを貼り付け
Public val(1 To 10) As Variant
あなたは正しい昇順([列E最低最高に、最高に列F最下位)に含まれている監視していますREF:
Private Sub Workbook_Open()
val(1) = Sheet1.Range("E1").Value
val(2) = Sheet1.Range("E2").Value
val(3) = Sheet1.Range("E3").Value
val(4) = Sheet1.Range("E4").Value
val(5) = Sheet1.Range("E5").Value
val(6) = Sheet1.Range("F1").Value
val(7) = Sheet1.Range("F2").Value
val(8) = Sheet1.Range("F3").Value
val(9) = Sheet1.Range("F4").Value
val(10) = Sheet1.Range("F5").Value
End Sub
最後に、値をあなたとシートのコード領域にこれを貼り付けます」変更を監視し、再び範囲を調整する
最後に、ブックを保存して閉じてからもう一度開いて、値とともに色が更新されるようにしてください。
ありがとうございました。コードを追加しましたが、セルをクリックして色を変更した場合にのみ動作するようです。 Autoが新しい価格を更新すると、それはうまくいかないようです。 – JustSomeExcelVbathings
ワークシート変更イベントは、シート上の実際の値が変更された場合にのみ発生します。あなたの値は何らかの式を使って自動更新されていると私は推測していますか?価格の値が更新されているメカニズムの詳細を投稿できれば、変更を反映させるために考えられる別の方法があるかどうかを確認できます。 –
はい、列見出しから値を受け取り、正確な価格を返す式が使用されています。したがって、式は値を変更するだけではありません。E10列に数式を書くと同じです(たとえばthis = A10)。そして、もし私がa10に書き込むと、1000と言うと1500に変えれば、E10で何も起こりません。値は変更されますが、背景色は変更されません。 – JustSomeExcelVbathings