Я пытаюсь написать функцию в Basic для LibreOffice Calc, чтобы получить первую букву каждого слова выбранной ячейки, используя следующий код:
Function GetFirstLetters(rng) As String
Dim arr
Dim I As Long
arr = Split(rng, " ")
If IsArray(arr) Then
For I = LBound(arr) To UBound(arr)
GetFirstLetters = GetFirstLetters & Left(arr(I), 1)
Next I
Else
GetFirstLetters = Left(arr, 1)
End If
End Function
И он работает правильно, если я не попытаюсь выполнить его снова, тогда кажется, что новый результат добавляется к результату любого предыдущего выполнения, и он возвращает обе строки вместе, например:
Также не имеет значения, удаляю ли я некоторые или даже все ячейки, или если я вызываю его, используя пустую ячейку или даже на другой странице, он всегда будет добавлять результат к предыдущему:
Почему это происходит? Как я могу исправить это поведение?
Я ничего не знаю о Basic, поэтому, пожалуйста, не ругайте меня, если это что-то очень простое.
Оригинальная функция такова:
Function GetFirstLetters(rng As Range) As String
'Update 20140325
Dim arr
Dim I As Long
arr = VBA.Split(rng, " ")
If IsArray(arr) Then
For I = LBound(arr) To UBound(arr)
GetFirstLetters = GetFirstLetters & Left(arr(I), 1)
Next I
Else
GetFirstLetters = Left(arr, 1)
End If
End Function
И я взял это отсюда: http://www.extendoffice.com/documents/excel/1580-excel-extract-first-letter-of-each-word.html.