Вы включаете весь массив в вывод - вам нужно остановиться перед последним элементом ...
Кроме того, ваш опубликованный код не возвращает никакого значения
Function GetName(Source As String)
Dim arr() As String 'declares a dynamic array
arr = VBA.Split(Source, " ") 'an array of words split by space from the Source string is built
'Ubound function gets the last position of items in the array
GetName = ""
For i = LBound(arr) To UBound(arr) - 1 '<<<<<<<<<<<<<
GetName = GetName + " " + arr(i)
Next i
End Function
Альтернативный подход:
Function GetName(Source As String) As String
Dim arr, v
v = Trim(Source)
If Len(v) > 0 Then
arr = VBA.Split(v, " ")
If UBound(arr) - LBound(arr) > 0 Then
ReDim Preserve arr(LBound(arr) To UBound(arr) - 1) '<< remove last element
GetName = Join(arr, " ")
Else
GetName = v
End If
End If
End Function