Создать функцию Excel, чтобы вернуть имя листа - PullRequest
1 голос
/ 04 октября 2019

Я пытаюсь создать функцию, которая возвращает имя листа, на котором находится функция. Однако приведенный ниже код возвращает активный лист, а не статический лист, где находится функция. Ранее у меня была стандартная формула Excel, чтобы дать мне имя листа, к которому я могу вернуться, если у vba нет способа вернуть лист, где находится функция?

Имя листа "TTD"

Формула Excel + FileSheetName (C1)

= TTD

Функция VBA

Function FileSheetName(aCellLocation)

    Application.Volatile

    aCellLocation = aCellLocation.Address
    Set aCellLocation = Range(aCellLocation)
    aSheetName = aCellLocation.Parent.Name

    FileSheetName = aSheetName

End Function

Ответы [ 2 ]

0 голосов
/ 04 октября 2019

Вы можете использовать application.caller: нет необходимости использовать диапазон, потому что range.parent.name даст имя листа диапазона, а не место, где находится функция (может отличаться)

Function FileSheetName2()
    FileSheetName2 = Application.Caller.Parent.Name
End Function
0 голосов
/ 04 октября 2019

Ваш аргумент функции уже является диапазоном - не нужно получать адрес и затем создавать диапазон из этого:

Function FileSheetName(aCellLocation As Range)
    Application.Volatile 
    FileSheetName = aCellLocation.Parent.Name
End Function

Здесь:

Set aCellLocation = Range(aCellLocation)

область действия Range по умолчанию используется активный лист: поэтому ваш результат неверен, если лист с формулой не выбранный лист.

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