Here's a user defined function:
Option Explicit
Function BreakLine(ByVal CrntCell As Range, ByVal WrapAt As Long) As String
Dim CrntSpacePos As Long, _
CommaPos As Long, _
PeriodPos As Long, _
NextSpacePos As Long, _
StringLength As Long, _
StartPos As Long, _
ControlPointer As Long, _
OldString As String, _
Wrap As String
Wrap = Chr(10)
OldString = Range(CrntCell.Address).Value
ControlPointer = 1
StringLength = Len(OldString)
NextSpacePos = 1
For StartPos = 1 To StringLength
CrntSpacePos = InStr(StartPos, OldString, " ")
CommaPos = InStr(StartPos, OldString, ",")
PeriodPos = InStr(StartPos, OldString, ".")
NextSpacePos = InStr(CrntSpacePos + 1, OldString, " ")
If NextSpacePos > WrapAt * ControlPointer Then
Debug.Print WrapAt * ControlPointer, CrntSpacePos, NextSpacePos
Mid(OldString, CrntSpacePos, 1) = Wrap
ControlPointer = ControlPointer + 1
End If
StartPos = NextSpacePos
If CrntSpacePos = 0 Or NextSpacePos = 0 Then Exit For
Next StartPos
BreakLine = OldString
End Function
in a blank cell: "=BreakLine(ref,#), ref = the address of the cell with string to break (e.g. A2), # = a number indicating break positions (60, 100, ...)
See cell D2 in the attachment
Bookmarks