Зарегистрировать событие для автоматически сгенерированного рабочего листа в Excel - PullRequest
1 голос
/ 06 апреля 2020

Когда пользователь дважды щелкает ячейку в сводной таблице, Excel создает новый рабочий лист с подробностями. Это идеально. Я ищу возможность зарегистрировать VBA-событие в этом новом рабочем листе. Я хочу зарегистрировать функцию для события Worksheet_SelectionChange для этой новой рабочей таблицы. Как я могу это сделать?

1 Ответ

0 голосов
/ 06 апреля 2020

Это немного сложно, но с вашей репутацией, я уверен, вы не боитесь осложнений:)

Прежде всего, в вашем файле Excel, убедитесь, что вы ссылаетесь на VBIDE в своей справке, используя следующее:

1. Для работы вам необходим VBIDE-справочник:

1.a. Вы можете запустить следующий код в вашем немедленном окне, чтобы прикрепить ссылку:

ThisWorkbook.VBProject.References.AddFromGuid _
        GUID:="{0002E157-0000-0000-C000-000000000046}", _
        Major:=5, Minor:=3

1.b. Или вы можете прикрепить "Microsoft Visual Basi c для расширяемости приложений 5.3" из ваших Инструменты \ Ссылки

2. После того, как ссылка будет прикреплена, вы можете добавить в свою рабочую книгу следующую функцию:

Const DBLQuote = """"

Private Sub Workbook_NewSheet(ByVal Sh As Object)
Dim Line As String

        With ThisWorkbook.VBProject.VBComponents(Sh.Name).CodeModule
            Line = .CreateEventProc("SelectionChange", "Worksheet") + 1
            .InsertLines Line, _
            "Msgbox " & DBLQuote & "Selection Changed !" & DBLQuote & ",vbOkOnly"

            '----> You can put your code here or call your function 
        End With
End Sub

Чтобы получить это, мне пришлось глубоко копать, но, слава Богу, это работает. Для получения дополнительной информации вы можете go здесь:

http://www.cpearson.com/Excel/vbe.aspx для VBE

Надеюсь, это поможет вам!

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