Как запустить макрос при изменении значения в определенной ячейке? - PullRequest
0 голосов
/ 25 января 2011

Позвольте мне в предисловии сказать, что я очень новичок в VB ...

Я пытаюсь запустить макрос всякий раз, когда значение в определенной ячейке изменяется. Я прочитал о том, как это сделать, но не могу заставить его работать. Я ввел следующий код в закрытый модуль объекта листа:

Private Sub Worksheet_Change(ByVal Target As Range)

    If Not Intersect(Target, Target.Worksheet.Range("$C$5")) Is Nothing Then

        Application.Run _

            "'Amex Payments_Experiment.xlsm'!SelectCells"

    End If    

End Sub

C5 - это ячейка, за которой я пытаюсь следить за изменениями. «SelectCells» - это макрос, который я хочу запустить. «Amex Payments_Experiment.xlsm» - это имя файла.

Когда я меняю значение в C5, ничего не происходит. Некоторая помощь будет отличной. Спасибо!


ОБНОВЛЕНИЕ:

Cyberkiwi - Нет, это не совсем то, как я это сделал, но когда я следую вашим инструкциям, я нахожу код, в котором вы говорите, что это должно быть. Чтобы добраться до частного модуля объекта листа, я щелкнул правой кнопкой мыши вкладку листа внизу, выбрал «просмотр кода», затем выбрал «лист» в раскрывающемся меню в центре вверху страницы.

User587834 - Да. Макросы включены.

Есть еще предложения?

Ответы [ 4 ]

1 голос
/ 25 января 2011

если вы используете Excel2007, убедитесь, что макросы включены, по умолчанию Excel 2007 отключает выполнение макросов для новой книги. для этого попробуйте выполнить любой другой макрос, чтобы убедиться, что макросы включены.

0 голосов
/ 25 января 2011

Проверьте свойство Application.EnableEvents и установите его на True, если требуется.

0 голосов
/ 25 января 2011

Этот код работает хорошо для меня

Private Sub Worksheet_Change(ByVal Target As Range)
    If Not Intersect(Target, Target.Worksheet.Range("$C$5")) Is Nothing Then
        MsgBox "hello"
    End If
End Sub

Возможно, проблема в вашем приложении. - выберите линию, содержащую пересечение, и нажмите F9, чтобы включить отладку, затем попробуйте изменить ячейку, чтобы увидеть, попадаете ли вы в подпрограмму. Если вы никогда не достигнете этой строки, то у вас нет кода в модуле clkass рабочей таблицы, или вы отключили события, или макросы отключены или ...

0 голосов
/ 25 января 2011

Я ввел следующий код в закрытый модуль объекта листа:

Как именно ты это сделал? Как ниже?

  • Alt-F11 для переключения в режим просмотра кода
  • Слева дважды щелкните по целевому листу
  • Справа вы видите введенный код? если нет, переходите к следующему шагу
  • Вставьте кодовый блок
...