PDA

Показать полную графическую версию : Макрос в Excel


nipopadyuk
18-11-2015, 15:20
Задача, при заполнении ячейки E[n] в ячейке J[n] прописывать текущую дату, а при заполнении ячейки I[n] прописывать текущую дату в ячейке K[n]
написал на скорую руку такой макрос, но он работает не корректно, при заполнении ячейки E[n] или J[n] дата вставляется и в I[n] и в K[n]
Помогите разобраться, что не так со скриптом...

Private Sub Worksheet_Change(ByVal Target As Range)
For Each cell In Target
If Not Intersect(cell, Range("E3:E65536")) Is Nothing Then
If Range("J" & cell.Row).Value = "" Then
With Range("J" & cell.Row)

.Value = Now


End With
Else

End If
End If
Next cell
For Each cell In Target
If Not Intersect(cell, Range("I3:J65536")) Is Nothing Then
If Range("K" & cell.Row).Value = "" Then
With Range("K" & cell.Row)

.Value = Now


End With
Else

End If
End If
Next cell
End Sub

a_axe
18-11-2015, 16:36
что не так со скриптом »
nipopadyuk, не касаясь вопросов оптимизации кода - должно быть "I", а не "J"If Not Intersect(cell, Range("I3:J65536")) Is Nothing Then
Updated:
В коде Вы дважды перебираете ячейки, значения которых единовременно изменились. Логично было бы делать все за один цикл, например так:
Private Sub Worksheet_Change(ByVal Target As Range)
For Each cell In Target
If cell.Row > 2 And cell.Row <= 65536 And cell.Value <> "" Then
Select Case cell.Column
Case 5
If cell.Offset(0, 5).Value = "" Then cell.Offset(0, 5).Value = Now
Case 9
If cell.Offset(0, 2).Value = "" Then cell.Offset(0, 2).Value = Now
End Select
End If
Next cell
End Sub

nipopadyuk
19-11-2015, 08:55
nipopadyuk, не касаясь вопросов оптимизации кода - должно быть "I", а не "J" »
Спасибо, решено :)




© OSzone.net 2001-2012