Вы можете достичь этого довольно просто, используя функцию Mid
, аналогичную ответу @Kemal Al GAZZAH, но используя опцию Step
для цикла вместо вычисления количества выходов, которые у вас будут
Sub test()
Dim TestStr
Dim i As Long, n As Long
Dim SplitStr As String
TestStr = "1111 2222222 3333 77777 44444 55555 6666 99999"
n = 10
For i = 1 To Len(TestStr) Step n
SplitStr = SplitStr & Mid(TestStr, i, n) & vbNewLine
Next i
MsgBox SplitStr
End Sub
Вы также можете написать это как Function
, что сделает его более удобным для использования
Option Explicit
Public Function SplitString(StringToSplit As String, n As Long) As String()
Dim i As Long, arrCounter As Long
Dim tmp() As String
ReDim tmp(0 To CLng(Len(StringToSplit) / n))
For i = 1 To Len(StringToSplit) Step n
tmp(arrCounter) = Mid(StringToSplit, i, n)
arrCounter = arrCounter + 1
Next i
SplitString = tmp
End Function
Public Sub test()
Dim TestStr As String
TestStr = "1111 2222222 3333 77777 44444 55555 6666 99999"
MsgBox Join(SplitString(TestStr, 10), vbNewLine)
End Sub