хочу модифицировать приведенный ниже код так, чтобы он выполнялся только при изменении данных в определенных столбцах. ... например, столбцы A, G и M
Нельзя. Вы должны проверить, перекрывает ли изменяемый диапазон интересующий вас диапазон, и выполнить действие только в том случае, если это так:
Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, Range("A:A,G:G,M:M")) Is Nothing Then
'this part runs the autofilter on my active sheet
ActiveSheet.AutoFilter.ApplyFilter
'this part runs all the table autofilters in the sheet "template"
Dim oList As ListObject
For Each oList In ActiveWorkbook.Worksheets("TEMPLATE").ListObjects
oList.AutoFilter.ApplyFilter
Next oList
Else
' perform an action if the columns in interest are not altered (if needed)
' if not needed then Else section can be removed
End If
End Sub
Конечно, вы можете использовать любое необходимое выражение типа данных Range
(Range, Columns, Rows, Cells, ...) вместо Range("A:A,G:G,M:M")
.
Прикрепляю к посту несколько видео по теме: