Если A1 изменится, поместите что-нибудь в B1 | Если A2 изменится, поместите что-нибудь в B2

#excel #vba

#excel #vba

Вопрос:

У меня есть строки из 1-100. Я знаю, как настроить таргетинг на определенные ячейки и получать из них данные, но как мне это сделать, когда любая строка от 1 до 100 может быть изменена?

Допустим, вы поместили что-нибудь в строку A3. Как бы вы написали «Обновлено» в строку B3 через VBA? Я хочу, чтобы это применялось к строкам A1-A100.

Спасибо

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

1. Посмотрите на событие Worksheet_Change. Здесь и здесь приведены ссылки, которые помогут вам начать.

2. Спасибо, я изучаю это.

Ответ №1:

Поместите следующий макрос события в область кода рабочего листа:

 Private Sub Worksheet_Change(ByVal Target As Range)
    Dim A As Range, Intersection As Range, Cell As Range

    Set A = Range("A1:A100")
    Set Intersection = Intersect(Target, A)
    If Intersection Is Nothing Then Exit Sub

    Application.EnableEvents = False
        For Each Cell In Intersection
            Cell.Offset(0, 1).Value = "Updated"
        Next Cell
        Application.EnableEvents = True
End Sub
  

Ответ №2:

  1. Откройте редактор VBA
  2. Дважды щелкните по листу, на котором выполняется действие (листы отображаются в левом верхнем поле)
  3. Выберите рабочий лист в левом поле над полем кода
  4. Выберите изменить в правом поле над полем кода
  5. Вставьте код

     Option Explicit
    
    Private Sub Worksheet_Change(ByVal Target As Range)
    
    With ThisWorkbook.Worksheets("Sheet1")
    
        If Not Intersect(Target, .Range("A1:A100")) Is Nothing Then
    
            Application.EnableEvents = False
                .Range("B" amp; Target.Row).Value = "Updated"
            Application.EnableEvents = True
        End If
    
    End With
    
    End Sub