Как разбить строку на каждый n-й символ в VBA, если только n-й символ = ""? - PullRequest
0 голосов
/ 27 марта 2019

У меня есть строка, похожая на

 "1111 2222222 3333 77777 44444 55555 6666 99999"

Можно ли разбить строку после каждого 10-го символа, не разбивая подстроки (под подстроками я подразумеваю «1111», «3333» и т. Д.),

1111
2222222 
3333 77777 
44444 
55555 6666
99999

Я пробовал это, но это не совсем правильно. Спасибо

Dim i As Long, n As Long
Dim SplitStr, check_10th, TestStr As String
Dim string_length As Double

TestStr = Cells(1, 1)
n = 10

For i = 1 To Len(TestStr) Step n
    check_10th = Mid(TestStr, n, 1)
    If check_10th <> " " Then
        For k = 1 To 10 
            check_10th = Mid(TestStr, n - k, 1)
        If check_10th = " " Then
            Exit For
        End If

    Next k

    SplitStr = SplitStr & Mid(TestStr, i, n - k) & vbNewLine
Else
    SplitStr = SplitStr & Mid(TestStr, i, n) & vbNewLine
End If

Next i

Cells(2, 1).Value = SplitStr

1 Ответ

4 голосов
/ 27 марта 2019

Я думаю, вам было бы намного лучше разделить вашу строку на массив и протестировать оттуда.

Примерно так (полностью не оптимизировано, но работает нормально):

Sub test()
    Dim somestring As String
    Dim word As Variant
    Dim outline As String
    Dim outstring As String

    somestring = "1111 2222222 3333 77777 44444 55555 6666 99999"

    For Each word In Split(somestring, " ")
        If Len(outline & " " & word) <= 10 Then
            outline = Trim(outline & " " & word)
        Else
            If outstring = "" Then outstring = outline Else outstring = outstring & vbCrLf & Trim(outline)
            outline = word
        End If
    Next

    outstring = outstring & vbCrLf & Trim(outline)

    Debug.Print outstring
End Sub

Выходы:

1111
2222222
3333 77777
44444
55555 6666
99999
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...