2016-06-21 13 views
0

私は比較的新しくExcelを学び、いくつかのアドバイスが必要です。私は2016年のエクセルを使用しています。私は他の記事を読んで、本当にマッチするものは何も見つかりません。誰かが、その行の他のセルが変更されたときにのみ、今日の日付に変更するために行内のセルを取得する方法を知っていますか?第2に、そのセルの日付が1週間以上前で、同じ行の別のセルの値が「開いている」場合、塗りつぶしの色を変更しますか?あなたが提供できるどんな洞察にも感謝します。その行のセルが変更されたときに変更されるセルの日付

答えて

0

これにはいくつかのVBAが必要です。 Alt + F11でVisual Basic Editor(VBE)を起動します。 VBAProject(プロジェクトウィンドウのブック)で、変更を検出したいセルが含まれているシートをダブルクリックします。そして、以下を追加します::

Private Sub Worksheet_Change(ByVal Target As Range) 

    'Detect if cell A1 has had a change 
    If Not Intersect(Target, Range("A1")) Is Nothing Then 

     'Change cell B2 to todays date 
     Range("B2").Value = Now() 

    'Detect if value in cell C2 is changed to "Open" 
    ElseIf Not Intersect(Target, Range("C2")) Is Nothing Then 

     'Is the date in B2 older than a week from now? 
     If DateAdd("d", -7, Now()) > Range("B2").Value Then 

      'Change the cell color of B2 
      Range("B2").Interior.Color = RGB(0, 255, 255) 'Cyan... it's so beautiful 
     End If 
    End If 

End Sub 

サブルーチンは、任意のセルは、サブルーチンが置かれているワークシートの値を変更したときに実行される特別なサブルーチンであること。そのひどいIf Not Intersect(...行で特定の細胞に変更が加えられたかどうかを検出します。それからそれはかなりストレートVBAのセルの値と色を変更し、いくつかの日付の算術演算やテストなどを行います。

+0

ありがとうJNevill。行の中の複数のセルを見るために必要なので、A1をA1:j1のような範囲に変更するだけですか?私は赤色にする必要がありますか? – JDaniel

+0

それはあなたの必要性によって異なります。もしあなたが 'If Not Intersect(Target、Range(" A1:J1 "))Nothingは完全に有効である場合よりも複数のセルで変化が起こったかどうかを検出したい場合。シアンに問題がありますか?赤は 'RGB(255,0,0) 'です。[colorpicker.com](http://www.colorpicker.com/)のようなサイト(R、G、Bの値は特に)をチェックして、カラーコード。 – JNevill

+0

JNevillのサポートに感謝します。私が家に帰るとすぐにこれを試してみる – JDaniel

関連する問題