Я пытался реорганизовать ваш код и очистить его в некоторых частях.
Прочитать комментарии кода и настроить его в соответствии с вашими потребностями.
РЕДАКТИРОВАТЬ: я предполагаю, что ваш код находится в sheet1, в противном случае вам нужно будет проверить, не пересекается ли целевой диапазон события с диапазоном, который изменяется в этой строке: evalCellSheet2.Offset(0, 1).Value = evalCellSheet1.Offset(0, 1).Value
Private Sub Worksheet_Change(ByVal Target As Range)
' Give meaningful names to your variables
Dim evalSheet1 As Worksheet
Dim evalSheet2 As Worksheet
' Try not to use variable names that may conflict with Excel/VBA objects, properties, etc,
Dim evalCellSheet1 As Range
Dim evalCellSheet2 As Range
Dim lastRowSheet1 As Long
Dim lastRowSheet2 As Long
' Fully qualify objects
Set evalSheet1 = ThisWorkbook.Sheets("Sheet1")
Set evalSheet2 = ThisWorkbook.Sheets("Sheet2")
' Reuse objects you have already set
lastRowSheet1 = evalSheet1.Cells(evalSheet1.Rows.Count, 1).End(xlUp).Row
lastRowSheet2 = evalSheet2.Cells(evalSheet2.Rows.Count, 1).End(xlUp).Row
For Each evalCellSheet2 In evalSheet2.Range("A1:A" & lastRowSheet2)
For Each evalCellSheet1 In Sheets("Sheet1").Range("A1:A" & lastRowSheet1)
If evalCellSheet2.Value = evalCellSheet1.Value Then
' As you're changing values, disable events and then reenable it
Application.EnableEvents = False
evalCellSheet2.Offset(0, 1).Value = evalCellSheet1.Offset(0, 1).Value
Application.EnableEvents = True
End If
Next evalCellSheet1
Next evalCellSheet2
End Sub
Дайте мне знать, если он работает