Доступ к подпункту на листе, когда рабочая книга закрыта - PullRequest
0 голосов
/ 04 марта 2019

Я хочу, чтобы всякий раз, когда книга закрывалась, должна вызываться Sub из листа (sheet13), но, как показано на скриншоте, я получаю ошибку Недопустимая или неквалифицированная ссылка.К настоящему времени я попробовал

  B2_Click

  !Sheets("sheet13").B2_click

  !Sheets("Employee Names").B2_click

  Thisworkbook.Sheets("Employee Names").B2_click 

И каждый раз получаю сообщение об ошибке.

enter image description here

Ответы [ 2 ]

0 голосов
/ 04 марта 2019

Прежде всего, простое решение, как уже упоминалось другими:
ThisWorkbook.Sheets("January").Something (строка чувствительна к регистру!)

Существует несколько способов ссылки на лист, и есть разные типы имендля рабочих листов.Вы должны различать «CodeName» и «Имя».Вы легко найдете больше информации о разнице между этими двумя.

Основные различия заключаются в том, что Name может быть изменен пользователем, это имя отображается на вкладке в нижней части Excel.Интерфейс.
CodeName можно изменить только через интерфейс VBA.
CodeName и Name обычно идентичны при создании рабочего листа (Лист1 и т. Д.).

Чтобы ссылаться на лист по имени, вы можете использовать этот код: ThisWorkbook.Sheets("SomeName").SomeFunction()
CodeName можно использовать прямо так: Sheet2.SomeFunction(), но я бы рекомендовал сначала изменить CodeName на что-то значимое / выразительное!

(Name) - это кодовое имя, Name - это видимое имя
Properties Sheet Example

Более подробную информацию об операторе Bang ! можно найти здесь.: https://rubberduckvba.wordpress.com/2018/03/15/vba-trap-default-members/

Обширный ответ по ссылочным листам:
https://stackoverflow.com/a/41481428/10223558

0 голосов
/ 04 марта 2019

Ваш последний пример должен сработать, поэтому я бы направил устранение неполадок на метод, который вы вызываете.Попробуйте это в новой книге:
В модуле ThisWorkbook

Private Sub Workbook_BeforeClose(Cancel As Boolean)
    ThisWorkbook.Worksheets("Sheet13").Test
End Sub

И в модуле Sheet13

Sub Test()
    MsgBox "Closing"
End Sub

Если это работает, у вас есть отправная точка.

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