WorkSheet_Change事件不会自动更新

我正在尝试根据列H中的值自动更新列I中的单元格值。 – 我希望每当用户在列H中input任何值时,前五个字符都应该复制到相应的列I中。

  • 如果我在列H中input123456789,则12345应立即在列I中自动更新

****面临的问题**

  • 当在列H中input值时,列i中的值不会自动填充。假设在列H中input了5行,则只有在用户在列I中input任何值后才会更新或填充值
  • 在下面的For循环中的代码,如果我更改Target.Range(“B”和我),当我点击列,列C中的值得到更新,而不是在B中。我明白所提到的预期目标范围是列I ,但为什么列C在for循环中input列B时得到更新**

    Private Sub Worksheet_Change(ByVal Target As Range) If Intersect(Target, Range("I1:I20")) Is Nothing Then Exit Sub Application.EnableEvents = False 'Set the values to be uppercase Dim i As Long 'With Sheets("Sheet1") For i = 1 To 20 Target.Range("A" & i).Value = Mid(Range("H" & i), 1, 5) Next i 'End With Application.EnableEvents = True End Sub 

你并不需要循环 – 要立即得到结果,只需简单地做到这一点

 Option Explicit Private Sub Worksheet_Change(ByVal Target As Range) Application.EnableEvents = False If Not Intersect(Target, Range("H1:H20")) Is Nothing Then Target.Offset(0, 1) = Mid(Target.Value, 1, 5) End If Application.EnableEvents = True End Sub 

Mid函数返回一个string,其中包含string中指定数量的字符。