2012-09-13 25 views
0

我要創建兩個日期戳,一個用於確定和一個也不行。這些值填寫在A列中,分別爲'x' for OK'NOK' for NOT OKExcel的VBA - 細胞的變化,郵戳在一列

當的「x」在列A中填充,在列49中的值應爲郵戳時的「x」填充。

當「NOK」在列在列填充,該值52應該是郵戳時「NOK」被填充。

此外,如果「X」或「NOK」從塔A除去,所以應該郵戳dissappear。這是我的。

Private Sub Worksheet_Change(ByVal Target As Range) 
    '49 = ok 
    '52 = NOK 

    Dim KeyCells As Range 

    ' The variable KeyCells contains the cells that will 
    ' cause an alert when they are changed. 
    Set LastRow = Range("A" & Rows.Count).End(xlUp).Row 
    Set KeyCells = Range("A1:" & LastRow) 

    If Application.Intersect(KeyCells, Range(Target.Address)) Like "*x*" Then 
     Cells(Row, 49).Value = Format(DateTime.Now, "yyyy-MM-dd hh:mm:ss") 
    End If 

    If Application.Intersect(KeyCells, Range(Target.Address)) Like "*NOK*" Then 
     Cells(Row, 52).Value = Format(DateTime.Now, "yyyy-MM-dd hh:mm:ss") 
    End If 

End Sub 
+1

你堅持在哪裏?你知道'Set KeyCells = Range(「A」&Rows.Count).End(xlUp).Row'不起作用,因爲ROW返回一個rownumber - 不是範圍? – Jook

+0

哦,讓我快速解決這個問題。也許它會工作。 – CustomX

+1

你沒有在'Cells(Row,';)中定義'Row' – Jook

回答

3

這裏,試試這個:

Private Sub Worksheet_Change(ByVal Target As Range) 
    '49 = ok '52 = NOK 
    Application.EnableEvents = False 

    With Target 
    'check if change happend in column A 
    If .Column = 1 Then 
     'check if changed value is X 
     If .Value Like "*x*" Then 
      'add datestamp if it is 
      Cells(.Row, 49).Value = Format(DateTime.Now, "yyyy-MM-dd hh:mm:ss") 
     Else 
      'clear datestamp if not 
      Cells(.Row, 49).Value = "" 
     End If 

     If .Value Like "*NOK*" Then 
      Cells(.Row, 52).Value = Format(DateTime.Now, "yyyy-MM-dd hh:mm:ss") 
     Else 
      Cells(.Row, 52).Value = "" 
     End If 
    End If 
    End With 
    Application.EnableEvents = True 
End Sub 
+0

它看起來應該可以工作,但由於某種原因,它不是:s我將此代碼添加到ThisWorkbook。 – CustomX

+1

啊 - 現在我明白了 - 不,你必須把它添加到你的工作表中!如果cou有多個工作表,那麼你應該把我的例程的內容導出到一個子例程中,比如'Sub OnColumnAChange(ByVal Target as Range)',並且從每個需要的Worksheet的每個Worksheet_Change中調用它。 – Jook

+0

另一種方法是使用'Workbook_SheetChange'事件,但是您必須將'Cells'改編爲'Sh.Cells' - 我想。如果此事件也會在其他事件中觸發,我現在不會立即採取行動。 – Jook