Как запустить макрос, если значение ячейки изменяется - PullRequest
0 голосов
/ 08 апреля 2019

Я создал макрос, который фильтрует на основе значения ячейки, которое работает нормально.

Range("A1:L1").AutoFilter Field:=4, Criteria1:=Range("U1")

Мне нужен этот макрос для запуска каждый раз, когда изменяется значение ячейки. Я написал макрос, но он не работает, я не получаю никаких ошибок, просто ничего не происходит.

Я пытался:

Private Sub Worksheet_Tabelle1(ByVal Target As Range)

If Target.Address = "$U$1" Then

Application.EnableEvents = False

Range("A1:L1").AutoFilter Field:=4, Criteria1:=Range("U1")

Application.EnableEvents = True

End If

End Sub

Эта версия должна просто выполнять код, а не вызывать макрос. Я изменил Worksheet_xxxxx на имя листа и попробовал другие вещи.

Я тоже пробовал:

Private Sub Worksheet_Arbeitstabelle(ByVal Target As Range)

If Target.Address = "$U$1" Then

Call Macro1

End If
End Sub

Эта версия должна вызывать следующий макрос:

Sub Macro1()


Range("A1:L1").AutoFilter Field:=4, Criteria1:=Range("U1")

End Sub

Я поместил все макросы Private Sub на Рабочий лист и Macro1 в модуль. Файл .xlsm и не имеет никаких проблем при запуске других макросов, поэтому я не знаю, почему он не работает. Я думаю, что я, вероятно, сделал что-то не так с именами, поэтому вот имена:

All Sheets with names

Ответы [ 2 ]

1 голос
/ 08 апреля 2019

Попробуйте это:

    Dim KeyCells As Range
    ' The variable KeyCells contains the cells that will
    ' cause an alert when they are changed.
    Set KeyCells = Range("A1:C10")

    If Not Application.Intersect(KeyCells, Range(Target.Address)) _
           Is Nothing Then

        ' Display a message when one of the designated cells has been 
        ' changed.
        ' Place your code here.
        MsgBox "Cell " & Target.Address & " has changed."

    End If
End Sub
0 голосов
/ 08 апреля 2019

Я изменил:

Private Sub Worksheet_Arbeitstabelle(ByVal Target As Range)

Кому:

Private Sub Worksheet_Change(ByVal Target As Range)

@ Сиддхарт Рут связал меня с: Почему MS Excel вылетает и закрывается во время Sub Sub_ Workshop_Change?

Здесь объясняется, что нет необходимости добавлять имя листа после Worksheet_ потому что код хранится в листе, поэтому нет необходимости указывать ему, что делать, поскольку его нет в модуле

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...