2017-02-07 14 views
0

У меня было чертовски время, выполняя то, что я считал бы невероятно простым испытанием. Все, чего я пытаюсь достичь, - это всплывающее окно MsgBox, когда пользователь выбирает новую ячейку или меняет содержимое ячейки.Excel Worksheet_SelectionChange событие не срабатывает вообще? (как на Office 2013, так и на 2016 год)

Я был в этом около 6 часов и до сих пор имеет нулевой успех! У меня одинаковое поведение с Office 2016 (Windows 10) и с Office 2013 (Windows 7).

Вот мой метод (ы):

  1. Создать новую книгу с поддержкой макросов.
  2. Запишите новый макрос в книге. Остановите запись. Открыть VBA.
  3. Откройте код для «Module 1» и замените нежелательный код на код ниже. Сохраните файл.
  4. Файл -> Параметры -> Центр доверия -> Настройки центра доверия -> Параметры макроса -> «Доверять доступ к объектной модели проекта VBA». Сохраните файл.
  5. Я также обеспечил Application.EnableEvents = True
  6. Я ожидаю, чтобы быть в состоянии нажать на различные клетки, или редактировать клетки, и получил MsgBox всякий раз, когда происходит событие.

Вот мой код:

Option Explicit 

Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)  
    MsgBox "changed!" 
End 

Private Sub Worksheet_SelectionChange(ByVal Target As Range) 
    MsgBox "selected!" 
End Sub 

Public Sub Just_In_Case() 
    Application.EnableEvents = True 
End Sub 

Что мне не хватает? Есть ли параметр безопасности, предотвращающий это событие? У меня такое же поведение в Интернете на работе, как и в автономном режиме дома.

Заранее благодарю вас за помощь! :)

PS Вот скриншот моего окружения VBA, если применимо: https://i.stack.imgur.com/yXkMK.png

+0

Таким образом, вы хотите, чтобы, если пользователь выбирает Лист 2 (например), появляется всплывающее окно, уведомляющее, что пользователь выбрал другой лист? –

ответ

0

Это Workbook_SheetChange код должен быть в модуле ThisWorkbook кода, а не в обычном модуле.

EDIT: и Worksheet_SelectionChange идет в модуле Worksheet кода

http://www.cpearson.com/excel/events.aspx

+0

Спасибо! Это решило большую часть этого! И событие рабочего листа входит в модуль кода ThisWorksheet.: D –

+0

Да - извините, что я пропустил, вы также использовали событие на уровне листа –

0

Для полной ссылки, решение в том, что мой код был неправильно помещен в кодирующей области Module1. (Я понятия не имел, код может пойти куда-нибудь еще!)

Workbook_SheetChange() принадлежит под ThisWorkbook

Worksheet_SelectionChange() принадлежит под Sheet1

Как это! скриншоты Image: Sheet1 ThisWorkbook

Спасибо вам большое, Тим, за вашу помощь! : D

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

  • Нет связанных вопросов^_^