2016-03-30 10 views
0

私は、Excelのプロジェクトに取り組んでいると私は生きて変化しており、列Eに、外部ソースから取得され価格とF.VBAマクロを1秒

を扱っていますどのようなIであるとします

  1. これらの細胞は、値を変更したとき、私は彼らがオレンジ色からその色を変更したいのは、私はこれが唯一の1秒以下のために起こるしたい白を言う、またはホワイト
  2. にセルの背景を変更することができます、元のセルの色または背景色に戻すことができます。

このようにして、私は価格を変更してもらうことができます。

これは可能ですか?

助けてください。とき、列EまたはFの変化の任意のセルのおかげ

答えて

2

は、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 

最後に、値をあなたとシートのコード領域にこれを貼り付けます」変更を監視し、再び範囲を調整する

最後に、ブックを保存して閉じてからもう一度開いて、値とともに色が更新されるようにしてください。

+0

ありがとうございました。コードを追加しましたが、セルをクリックして色を変更した場合にのみ動作するようです。 Autoが新しい価格を更新すると、それはうまくいかないようです。 – JustSomeExcelVbathings

+0

ワークシート変更イベントは、シート上の実際の値が変更された場合にのみ発生します。あなたの値は何らかの式を使って自動更新されていると私は推測していますか?価格の値が更新されているメカニズムの詳細を投稿できれば、変更を反映させるために考えられる別の方法があるかどうかを確認できます。 –

+0

はい、列見出しから値を受け取り、正確な価格を返す式が使用されています。したがって、式は値を変更するだけではありません。E10列に数式を書くと同じです(たとえばthis = A10)。そして、もし私がa10に書き込むと、1000と言うと1500に変えれば、E10で何も起こりません。値は変更されますが、背景色は変更されません。 – JustSomeExcelVbathings