#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:
- Откройте редактор VBA
- Дважды щелкните по листу, на котором выполняется действие (листы отображаются в левом верхнем поле)
- Выберите рабочий лист в левом поле над полем кода
- Выберите изменить в правом поле над полем кода
-
Вставьте код
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