never, never, with a word break.
That is more complicated than just breaking at a given number of characters.
Here's another macro that makes use of Regular Expressions to ensure that the split does NOT occur at a <whitespace> character which is defined as a space, tab or linebreak. (That can be changed if necessary).
Use the same method of entering the macro as before. Note that, as written, it process everything in Column A and places the results in the adjacent cell in Column B
==================================
Option Explicit
Sub BreakNotAtWord()
Dim r As Range
Dim v As Variant
Dim i As Long, J As Long
Dim re As Object, mc As Object, m As Object
Dim sPat As String, s As String
Dim vSplitLines() As String
Set r = Range("A1", Cells(Rows.Count, "A").End(xlUp))
v = r
Set re = CreateObject("vbscript.regexp")
i = Application.InputBox("Maximum Characters per Line: ", Type:=1)
sPat = ".{1," & CStr(i - 1) & "}[\S](?=\S|$)"
With re
.Pattern = sPat
.Global = True
.MultiLine = False
End With
If VarType(v) < vbArray Then
s = v
ReDim v(1 To 1, 1 To 1)
v(1, 1) = s
End If
For i = LBound(v) To UBound(v)
If re.test(v(i, 1)) = True Then
Set mc = re.Execute(v(i, 1))
ReDim vSplitLines(1 To mc.Count)
J = 0
For Each m In mc
J = J + 1
vSplitLines(J) = m
Next m
v(i, 1) = Join(vSplitLines, vbLf)
End If
Next i
Set r = r.Offset(columnoffset:=1)
Application.ScreenUpdating = False
r.EntireColumn.Clear
r = v
r.WrapText = True
r.EntireColumn.ColumnWidth = 255
r.EntireRow.AutoFit
r.EntireColumn.AutoFit
Application.ScreenUpdating = True
End Sub
================================