2016-06-03 6 views
0

Я пытаюсь восстановить имя листа и временно сохранить его, используя следующую функцию в VBA.Требуется объект Ошибка 424

Function MySheet() 

    MySheet = Application.Caller.Worksheet.Name 

End Function 

Но продолжает возвращаться объект требуется подсветка
MySheet = Application.Caller.Worksheet.Name.

Пожалуйста, помогите.

ответ

0

Dim WS, как лист набор Ws = activeworksheet

затем попытаться получить имя от ws.name

0

Для получения рабочей таблицы .Name property вам необходимо указать Range.Parent property из Application.Caller.

Function MySheet() 

    MySheet = Application.Caller.Parent.Name 

End Function 

Это предполагает, что вы используете это на рабочем листе в виде функции UDF¹ рабочего листа.


¹ опред.польз.имя Функция (иначе ОДС) помещают в стандартный модуль кода листа. Нажмите Alt + F11 и при открытии VBE, немедленно использовать выпадающее меню для Вставка ► Модуль (Alt + I, M). Вставьте код функции в новый код модуля, обозначенный как-то вроде Book1 - Module1 (Code). Нажмите Alt + Q, чтобы вернуться на рабочий лист (ы).

+0

, не решить, та же ошибка, то же самое место, к сожалению –

+0

Application.Caller бы быть ячейкой, в которую помещается функция UDF. Родитель ячейки рабочего листа является листом, и вы можете получить его имя. Если вы пытаетесь вызвать это из модуля модуля VBA или somesuch, тогда вам нужен лучший способ определения Application.Caller, потому что нет ячейки рабочей таблицы, вызывающей функцию. – Jeeped

+0

Итак, как мне найти лучший способ? Очень новое для VBA и им очень смутно. –

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