0

OK 用と NOT OK 用の 2 つの日付スタンプを作成したいと考えています。値は列 A に入力され、'x' for OK'NOK' for NOT OKです。

列 A に「x」が記入されている場合、列 49 の値は、「x」が記入されているときの日付スタンプでなければなりません。

列に「NOK」が記入されている場合、列 52 の値は「NOK」が記入されているときの日付スタンプでなければなりません。

また、「x」または「NOK」が列 A から削除されると、日付スタンプも消えます。これは私が持っているものです。

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
4

1 に答える 1

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
于 2012-09-13T08:34:03.210 に答える