Автоматическая замена текста в столбце после вставки

#excel #vba

#excel #vba

Вопрос:

Приведенный ниже код правильно заменяет значение при запуске макроса. Однако я хочу, чтобы этот макрос запускался вскоре после того, как я вставлю значение или строку в ячейку …. означает, что когда я вставляю значение, оно должно автоматически изменять / заменять значение без нажатия кнопки запуска в макросе… Например, когда я вставляю данные в лист1 FHH, FGA, он должен автоматически заменить их «FST», «FPT»…. Например, автоматическая замена после вставки.

 Sub Multi_FindReplace()

Dim sht As Worksheet
Dim fndList As Variant
Dim rplcList As Variant
Dim x As Long

fndList = Array("FHH", "FGA")
rplcList = Array("FST", "FPT")

'Loop through each item in Array lists
  For x = LBound(fndList) To UBound(fndList)
    'Loop through each worksheet in ActiveWorkbook
      For Each sht In ActiveWorkbook.Worksheets
        sht.Cells.replace What:=fndList(x), Replacement:=rplcList(x), _
          LookAt:=xlPart, SearchOrder:=xlByRows, MatchCase:=False, _
          SearchFormat:=False, ReplaceFormat:=False
      Next sht
  
  Next x

End Sub
  

Приведенное ниже значение должно автоматически заменяться в столбце 2 после вставки

Комментарии:

1. Что вы пытались сделать, чтобы сделать / включить это? Попробуйте сделать это, и если у вас возникнут проблемы или вы застряли, спросите еще раз, что вы пытались сделать / воплотить в жизнь.

2. что включить?

3. Вы можете использовать Worksheet_Change событие для запуска замены.

Ответ №1:

Я бы поместил этот код в событие Thisworkbook, Workbook_SheetChange. Преимущества этого метода в том, что вам не нужно заполнять все листы, и вам не нужно перебирать все листы.

 Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
    Dim fndList As Variant
    Dim rplcList As Variant
    Dim x As Long
    fndList = Array("FHH", "FGA")
    rplcList = Array("FST", "FPT")
    'Loop through each item in Array lists
    For x = LBound(fndList) To UBound(fndList)
          Target.Replace What:=fndList(x), Replacement:=rplcList(x), _
            LookAt:=xlPart, SearchOrder:=xlByRows, MatchCase:=False, _
            SearchFormat:=False, ReplaceFormat:=False
    Next x
End Sub