Ошибка может произойти и поставить в тупик в том случае, если определение функции расположено ранее её первого вызова и при этом вызов осуществлен без обязательных аргументов. Например:
Sub Main Dim str As String str = GetDocFullPath() MsgBox(GetFileBaseName(str)) End Sub Function GetDocFullPath(sInput as String) As String GetDocFullPath = ConvertFromURL(ThisComponent.getLocation()) End Function
Код выше сгенерирует ошибку
BASIC syntax error.
Symbol GetDocFullPath already defined differently.
Если же переместить местами определение функции, то ошибки уже не появится
Function GetDocFullPath(sInput as String) As String GetDocFullPath = ConvertFromURL(ThisComponent.getLocation()) End Function Sub Main Dim str As String str = GetDocFullPath() MsgBox(GetFileBaseName(str)) End Sub
Но можно и нужно в первую очередь исправить сам некорректный вызов функции, тогда и проблемы не будет.
Sub Main
Dim str As String
str = GetDocFullPath("BLABLABLA")
MsgBox(GetFileBaseName(str))
End Sub
Function GetDocFullPath(sInput as String) As String
GetDocFullPath = ConvertFromURL(ThisComponent.getLocation())
End Function