2011-01-25 2 views
0

Позвольте мне предисловие, сказав, что я очень новичок в 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, ничего не происходит. Некоторая помощь будет отличной. Благодаря!


UPDATE:

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

User587834 - Да. Макросблокируются.

Любые другие предложения?

ответ

0

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

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

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

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

0

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

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 

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

0

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

Смежные вопросы