Все слова, длиной более пяти символов, начинать с прописной буквы - VBA

Формулировка задачи:

Добрый день! Требуется написать программу в VBA: Дан текст, слова которого отделяются друг от друга пробелами. Вывести исходный текст, таким образом, чтобы все слова, длиной более пяти символов, начинались бы с прописной буквы. Я написал, но у меня выходит что все слова выводит с прописной буквы, как изменить мой код-формирование строки вывода (именно изменит мой) чтоб только слова длинной более 5 выводило с прописной ?
Private Sub CommandButton1_Click()
Dim str, str1 As String
Const N = 100
Dim M(N) As String
Dim str_v As String
str = TextBox1.Value
 'Просмотр всех символов строки
j = 1
str = LTrim(str) ' удалить начальные пробелы из строки
For i = 1 To Len(str)
    If Mid(str, i, 1) <> " " Then
        M(j) = M(j) + Mid(str, i, 1)
    Else
' если слова отделены между собой несколькими пробелами то пропустить эту последовательность
        While Mid(str, i + 1, 1) = " "
            i = i + 1
         Wend
        ' подсчитывать слова только если за последовательностью пробелов следует слово
        If Mid(str, i + 1, 1) <> "" Then
            j = j + 1
        End If
    End If
Next i
' Формирование строки для вывода
For i = 1 To j
 str_v = str_v & StrConv(M(i), vbProperCase) & "  "
Next i
TextBox2.Value = str_v
End Sub
 
Private Sub TextBox1_Change()
 
End Sub

Код к задаче: «Все слова, длиной более пяти символов, начинать с прописной буквы - VBA»

textual
Private Sub CommandButton1_Click()
Dim sp
Dim str, str1 As String
Const N = 100
Dim M(N) As String
Dim str_v As String
str = TextBox1.Value
 'Просмотр всех символов строки
j = 1
str = LTrim(str) ' удалить начальные пробелы из строки
For i = 1 To Len(str)
    If Mid(str, i, 1) <> " " Then
        M(j) = M(j) + Mid(str, i, 1)
    Else
' если слова отделены между собой несколькими пробелами то пропустить эту последовательность
        While Mid(str, i + 1, 1) = " "
            i = i + 1
         Wend
        ' подсчитывать слова только если за последовательностью пробелов следует слово
        If Mid(str, i + 1, 1) <> "" Then
            j = j + 1
        End If
    End If
Next i
' Формирование строки для вывода
sp = Split(TextBox1.Value, "")
For j = 0 To UBound(sp)
  If Len(Replace(sp(j), ",", "")) > 5 Then 'если длина строки без запятых больше 5 символов то
            sp(j) = UCase(Left(sp(j), 1)) & Right(sp(j), Len(sp(j)) - 1) 'делаем первую букву прописной
        End If
    Next
TextBox2.Value = Join(sp, " ")
End Sub
 
Private Sub TextBox1_Change()
 
End Sub

10   голосов, оценка 4.000 из 5


СОХРАНИТЬ ССЫЛКУ