Создать автоматическую отметку даты в Excel из записи

Я пытаюсь, чтобы событие отметки даты произошло в столбце B, когда запись сделана в столбце A. Теперь я могу сделать это в VBA без проблем, проблема, с которой я сталкиваюсь, заключается в том, что есть также запись, которая в конечном итоге войдет в скажем, столбец D, и в столбце E также потребуется отметка даты. Это возможно. вот образец кода, который я использовал до сих пор.

Private Sub Worksheet_Change (ByVal Target As Range) для каждой ячейки в целевой If Cell.Column ‹= 3 Then If Cells (Cell.Row, 1)‹> "" Then Cells (Cell.Row, 2) = Now End If Next Cell Конец подписки


person Obfus    schedule 10.05.2010    source источник


Ответы (1)


Если вы согласны с тем, что каждый нечетный столбец вводится пользователем, а временные метки находятся в четных столбцах (т.е. вы можете ввести столбец A, а метка времени будет в столбце B. Вы можете ввести столбец C и отметку времени войдет в столбец D и т. д.), тогда вы можете использовать это:

Private Sub Worksheet_Change(ByVal Target As Range)

    'Only write a timestamp of an odd column changes (because the timestamps go in the even columns)
    If Target.Column Mod 2 > 0 Then

        'Get the first part of the address, to get the actual column being changed
        Dim columnAddress As String
        columnAddress = Target.Address

        If InStr(columnAddress, ":") > 0 Then
            columnAddress = Left(columnAddress, InStr(columnAddress, ":") - 1)
        End If

    'This will cause the TimeStamp to be undeletable (kind of like na Audit).
    'If you want the timestamp to disappear when you clear the column, uncomment the next few lines:

    '        If Not ActiveSheet.Range(columnAddress).Formula = "" Then

            ''Write the timestamp for the previous column
            ActiveSheet.Range(columnAddress).Offset(0, 1).Formula = Now

    '        Else
    '            ActiveSheet.Range(columnAddress).Offset(0, 1).Formula = ""
    '        End If
    End If


End Sub

Вы можете скрыть столбцы, в которых не нужно отображать метку времени.

person Michael Rodrigues    schedule 10.05.2010
comment
Это будет работать. Есть ли способ, чтобы при выборе и удалении диапазона как для A, так и для B это не выглядело смешным? - person Obfus; 10.05.2010