Я сталкиваюсь с проблемой, которая, вероятно, очень проста, когда я использую функцию VBA в формуле ячейки, я получаю содержимое ячейки "#NAME" (функция not found?), В то время как макрос, использующий функцию (для теста), являетсявыполняется нормально (отображает желаемое содержимое для ячейки, возвращаемое значение функцией, которая извлекает имя файла из полного пути).
контекст:
Я имел кПрошлое (более 12 лет назад) разработано, может быть, 50 000 инструкций VBA с использованием office2003. Сегодня мне нужно снова разработать некоторые макросы с Office365. Поэтому с тех пор я многое забыл, и некоторые функции могут измениться, что может статьобман (мне нужно перечитать мой старый софт, чтобы вспомнить все мои знания, но у меня пока нет к нему доступа)
Проблема
- Я получаю ошибку «#name», когда использую функцию, созданную в VBA, связанную с текущей книгой. Никаких объяснений, никакой помощи, я пытался найти что-то в течение нескольких часов, и яничего не найдено
- Я также разработал для тестирования (см. Код) "sub", который вызывает функцию, и его выполнение прошло успешно, но ...
- Я не могу запустить функцию из формулылюбая ячейка.
- Я проверил параметры безопасности макроса и временно разблокировал выполнение, а также объявил локальный каталог как надежную область.
Примечание: этот код детализирован в качестве примера
Код
Public Function FNameOf(CellPointed As Range)
Dim CurCell As Range
Dim Text1 As String
Dim Text2 As String
Set CurCell = CellPointed
Text1 = CurCell.Value
Text2 = Mid$(Text1, InStrRev(Text1, "\") + 1, Len(Text1))
FNameOf = Text2
End Function
Sub DispFileName2()
Dim style, disp, titre
Dim Cursel As Range
'Cursel = ActiveCell
disp = FNameOf(ActiveCell)
style = vbOKOnly
titre = "Nom du fichier extrait du texte (fullpath) de la cellule courante"
MsgBox disp, style, titre
End Sub
Если я отправлю макрос DispFileName2, если получу сообщение с файломимя, извлеченное из пути, являющегося содержимым текущей ячейки
Если я задаю формулу ячейки:
=FNameOf(AnotherCell) 'which contains a fullpath to a file
Я всегда получаю ошибку "#NOM" (во французской версии) или, я так думаю, «#NAME» (в англоязычной версии), как если бы имя функции (ref) было неизвестно из рабочей книги (код не достигнут, для первой инструкции установлен останов)
В чем может быть причина?