私はテキストブロックを1行に50文字まで含むようにプログラムを作成しようとしていましたが、改行文字の場合、テキスト行の最後のスペースは50文字ですが)私は出力として値エラーを取得し続けます!ここでVBA改行コードのExcel値のエラー
コードは、これまでのところです:
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