Получение всех слов, кроме последнего, из строки - PullRequest
0 голосов
/ 16 мая 2018

Я пытаюсь получить все слова, кроме последнего, из имени, указанного в ячейке Excel. По какой-то причине мой простой код VBA не будет работать; это просто возвращает мне оригинальное имя как есть. Может кто-нибудь помочь объяснить, почему?

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
    Name = ""

    For i = LBound(arr) To UBound(arr)
        Name = Name + " " + arr(i)
    Next i
End Function

1 Ответ

0 голосов
/ 16 мая 2018

Вы включаете весь массив в вывод - вам нужно остановиться перед последним элементом ...

Кроме того, ваш опубликованный код не возвращает никакого значения

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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...