2016-06-28 4 views
0

У меня есть код ниже, который будет зависеть от триггеров, столбцов A и B, чтобы указать временные метки для каждой завершенной записи, однако я продолжаю получать всплывающее сообщение об ошибке 1004:Время начала и окончания с именем пользователя

Private Sub Worksheet_Change(ByVal Target As Range) 
If Not Intersect(Target, Range("A2:B501")) Is Nothing Then 
Target.Offset(0, 12) = Now 
Target.Offset(1, 13) = Now 
Target.Offset(0, 14) = Environ("UserName") 

End If 
End Sub 

Я новичок в VBA, надеюсь, вы, ребята, можете мне помочь.

+0

Код отлично работает здесь, с какой строкой возникает ошибка? –

+0

Ну, «отлично» ... Я имею в виду, что я не получаю репродукцию на вашем 1004. Кажется неудобным, что столбец редактирования A поместил бы имя пользователя в столбец O, а редактирование столбца B помещает имя пользователя в столбец P ... но это то, что делает ваш код в любом случае, и он работает. –

ответ

1

Лучший способ справиться с этим что-то вроде:

Private Sub Worksheet_Change(ByVal Target As Range) 

    Dim rng As Range 

    Set rng = Application.Intersect(Target, Me.Range("A2:B501")) 
    'Work with "rng", not "Target", since Target might contain cells 
    ' outside of ColA or B... 
    If Not rng Is Nothing Then 
     'Target (and so rng) could contain multiple cells 
     ' so need to address them individually 
     For Each c In rng.Cells 
      'EDIT: 
      c.Offset(0, 12) = Now 'ColA >> M, ColB >> N 
      c.EntireRow.Cells(1, "O") = Environ("UserName") 
     Next c 

    End If 

End Sub 

Однако, так как вы обработки как колой и ColB есть шанс, что вы можете закончить перезапись значения, так как диапазоны смещения от А и В будут пересекаться

+0

Привет, Тим, спасибо! Моя цель - иметь время начала и окончания файла, поэтому в столбце A они просто помещают любую запись, и она запускает временную метку начала в столбце M, в то же время помещая имя пользователя в столбце O, а затем после Завершить заполнение других столбцов, конечная метка времени будет вызвана записью в столбце B. –

+0

См. мои правки. Пока неясно, куда все должно идти. Почему смещение строки, например? –

+0

Ваши правки идеальны. спасибо вам за помощь Тим! im только новый в этом vba. и им учиться на тестах и ​​попробовать. –