To było jedno z największych przebojów w Google, kiedy szukałem „makra tekstu z zawijaniem Excela”… więc oto moje rozwiązanie do zawijania komórki tekstu na podstawie szerokości:
Function hardwrap(useThis As Range, WrapAt As Integer) As String
Dim i As Integer
Dim Temp As String
Dim retVal As String
i = 0
retVal = useThis.Value
With useThis
If Len(.Value) > WrapAt Then
Temp = retVal
Do
i = i + WrapAt
Do
If Mid(Temp, i, 1) = " " Then
Temp = Left(Temp, i - 1) & Chr(10) & Right(Temp, Len(Temp) - i)
Exit Do
Else
i = i - 1
If i < 0 Then
Exit Do
End If
End If
Loop
Loop While i < Len(Temp) - WrapAt
retVal = Temp
End If
End With
hardwrap = retVal
End Function
Ten kod jest w dużej mierze oparty na tej funkcji Andrew Poulsom'a znalezionej tutaj: http://www.mrexcel.com/forum/excel-questions/424309-macro-wrap-text-hard-returns.html#post2097820
Zasadniczo, jeśli ciąg jest dłuższy niż zawijanie w zmiennej, przeskakuje do przodu do punktu zawijania i maszeruje do tyłu w poszukiwaniu spacji. Kiedy ją znajdzie, zamienia tę przestrzeń na nową linię. Następnie powtarza się dla równowagi łańcucha.
Moja wersja jest trochę bardziej ogólna (IMHO).
Przykład:
A1:
"Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum."
A2: =hardwrap(A1,40)
"Lorem ipsum dolor sit amet,
consectetur adipiscing elit, sed do
eiusmod tempor incididunt ut labore et
dolore magna aliqua. Ut enim ad minim
veniam, quis nostrud exercitation
ullamco laboris nisi ut aliquip ex ea
commodo consequat. Duis aute irure
dolor in reprehenderit in voluptate
velit esse cillum dolore eu fugiat
nulla pariatur. Excepteur sint occaecat
cupidatat non proident, sunt in culpa
qui officia deserunt mollit anim id est
laborum."
Mam nadzieję, że to pomaga.