Доброе утро всем!
Хочется ускорить макрос, который при изменению значения определенного столбца устанавливает в соседние текущую дату и имя пользователя компьютера:
В общем код работает отлично, но на одну замены уходит до 1 секунды
Можно ли его переделать, чтобы работал быстрее?
Хочется ускорить макрос, который при изменению значения определенного столбца устанавливает в соседние текущую дату и имя пользователя компьютера:
Код |
---|
Sub DateName(Target As Range, KeyCells As Range) If Not Application.Intersect(KeyCells, Target) Is Nothing Then Target.Offset(0, 2).Value = Date Target.Offset(0, 3).Value = Application.UserName Target.Offset(0, 4).Value = Time End If End Sub Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range) On Error Resume Next 'столбец куда вносятся изменения Col_tag = Range("A1:AM5").Find("STATUS", , xlValues, xlWhole).Column 'столбец куда "вставляется" имя пользователя, чтобы потом его поменять Col_Sig = Range("A1:AM5").Find("Signature", , xlValues, xlWhole).Column lLastRow = Cells(Rows.Count, Col_tag).End(xlUp).Row 'при изменении столбца Col_tag, записываем дату, имя пользователя и время DateName Target, Range(Cells(5, Col_tag), Cells(lLastRow, Col_tag)) 'далее, для удобства идет переименование "имени пользователя" в реальное имя сотрудника 'для примера две замены, по факту их более 20 Range(Cells(5, Col_Sig), Cells(lLastRow, Col_Sig)).Replace What:="PC_USER1", Replacement:="IVAN IVANOV", _ LookAt:=xlPart, SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:= _ False, ReplaceFormat:=False Range(Cells(5, Col_Sig), Cells(lLastRow, Col_Sig)).Replace What:="PC_USER2", Replacement:="PETR PETROV", _ LookAt:=xlPart, SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:= _ False, ReplaceFormat:=False |
В общем код работает отлично, но на одну замены уходит до 1 секунды
Можно ли его переделать, чтобы работал быстрее?