excel如何让文字满一定字数就自动换到下个单元格并且不会覆盖或者上面符合vba就用不了?

在之前https://ask.csdn.net/questions/7466946?expend=true的提问中,我已经知道怎么让文字满一定字数就自动换到下个单元格,但是该vba使用时,如果下方也有文字,就会覆盖下方的文字,而不是下方的文字也会分段到下一格,并且如果上方的是15个字,那么下方那很多的字就不会再分,
所以我想问下,如何在能够2段长文字在上下相邻的2个单元格的时候,以及上方为15个字的时候,也能够让文字满一定字数就自动换到下个单元格?最好列宽为32,字数为15为例。顺便想问下,之前的语句中,如何让多个或者所有列都能换单元格?

运行前:
img

运行后:
img

代码:


 
 Sub aa()
    n = 2 '第几列
    r = Range("A65536").End(xlUp).Row
    i = 1
    Do While i <= r
        l = Len(Cells(i, n).Value)
        If l > 15 Then
            k = i & ":" & i
            Range(k).Select
            Selection.Insert Shift:=xlDown, CopyOrigin:=xlFormatFromLeftOrAbove
            Cells(i, n).Value = Left(Cells(i + 1, n).Value, 15)
            Cells(i + 1, n).Value = Right(Cells(i + 1, n).Value, l - 15)
            r = r + 1
        End If
        i = i + 1
    Loop
End Sub



你好,我尝试了一下,结果如图所示,在第一列的时候情况正常,在第二列的时候使用异常,请问能再修改一下吗?本人不懂编程,还望求教

img

img

img

img

img

img

img

这个第二列运行了之后,只有一点点有用,未运行前4-10行与第3行一致,运行后不变,第2,3行只是话里的一部分,并且运行前第一列只有1个空,运行后有3个,之前的图也是运行第二列后,第一列多出3个空,这是其异常处,也就是说,只对第一列有效,对第2,3等等之后的列无效。所以希望能够在每列正常运行或者干脆直接一次性全部列运行成功而不是局限于第一列。