То, как вы находите текст, немного шатко. В ожидаемом формате не так много места для изменений. Не видя вашего фактического ввода, это будет много догадок, но здесь все идет.
Я подозреваю, что слово подзадача помещается в разные столбцы, и вы получаете только те, которые начинаются в столбце 4. Вот несколько советов это может упростить отладку.
- Это поможет вам найти пропущенные строки и определить их местоположение. Заменить
End If
на
Else
locationSUBTASK = InStr(1, txt, "SUBTASK")
Debug.Print "SUBTASK found in position " & locationSUBTASK
End If
Mid
- это функция, которая немного вам поможет. Заменить
Right(Left(txt, 11), 8)
на
Mid(txt, 4, 8)
. Не очень помогает вашей текущей проблеме, но все же. Узнайте о регулярных выражениях. Вот фрагмент кода, который поможет вам начать:
Dim RegExp As Object
Dim Matches As Object
Dim txt As String
txt = "something SUBTASK yada yada"
Set RegExp = CreateObject("VBScript.RegExp")
RegExp.Pattern = ".*SUBTASK (.*)"
Set Matches = RegExp.Execute(txt)
Debug.Print Matches(0).SubMatches(0)
Шаблон ".*SUBTASK (.*)"
означает «Найти слово« ПОДЗАДАЧА »в любом месте строки и отслеживать, что будет после него». , Партия (.*)
будет распознана как субматч.