Итак, я пытаюсь создать программу, которая займет блок текста и отредактирует его, чтобы включать только до 50 символов в строке, но также сохраняя слова вместе (поэтому заменяя последнее место в строке текста длиной 50 символов для символа прерывания строки), но я продолжаю получать ошибку значения в качестве моего вывода!Ошибка значения значения в Excel для кода прерывания VBA
Вот код до сих пор:
Option Explicit
Public Function LnBrk50(selection) As String
Dim bookmark As Long
Dim step As Byte
Dim length As Byte
'finds the last instance number of a space character in the text block within 50 characters
length = 50 - Len(WorksheetFunction.Substitute(Left(selection, 50), " ", ""))
'replaces the last instance of a space character with a line break character
selection = WorksheetFunction.IfError(WorksheetFunction.Substitute(selection, " ", vbNewLine, length), selection)
'character number of the last line break in the text block
bookmark = WorksheetFunction.Find(vbNewLine, selection)
step = 0
Do Until step = 9
'finds the last instance number of a space character in the text block within the 50 characters after the last line break
length = 50 + bookmark - Len(WorksheetFunction.Substitute(Left(selection, 50 + bookmark), " ", ""))
'replaces the space character found in last line with a line break character
selection = WorksheetFunction.IfError(WorksheetFunction.Substitute(selection, " ", vbNewLine, length), selection)
'adds character number of the last line break
bookmark = WorksheetFunction.Find(vbNewLine, selection, bookmark + 1)
step = step + 1
Loop
End Function
Так что, если кто-то может найти то, что ошибки я мог бы сделать, что бы произвести #VALUE! ошибка при использовании в одной ссылочной текстовой ячейке, было бы очень полезно!
Несколько комментариев по поводу вашего кода: Старайтесь не использовать функции листа, когда функции обработки текста VBA будут работать лучше; Вы используете функцию, но не возвращаете значение; Функция, вызванная из листа, должна предоставлять значение, которое отображается в вызываемой ячейке, - не следует пытаться модифицировать другие ячейки. – OldUgly
А, вот, я думал, что программа отобразит окончательный вывод цикла Do в ячейке, в которой я использую эту функцию. Поскольку я новичок в VBA, я не видел, что мне нужно было установить функцию, равную выходу. Спасибо за ваш отзыв! – RDub549