помогите поправить макрос

  • Автор темы tem1112
  • Дата начала
T

tem1112

#1
ПОМОГИТЕ

В ячейках последовательность кодов они разделены между собой " - " (пробел дефис пробел) нужно оставлять в ячейке только 65 символов при этом строка всегда будет оканчиваться на "- " (дефис пробел), (т.к. коды имеют одинаковую длину), а остальные будут переноситься ниже, во вновь созданную строку, где опять будет проверяться условие на 65 символов. Но в коде может встречаться текст (21 символ) делить его нельзя, и если при этом условие 65 символов будет дробить этот текст, то нужно перенести его ниже во вновь созданную строку, ячейку снизу. и при этом проверить чтобы последними символами в этой строке были "- " (дефис пробел)(в такой последовательности), если это не так сдвигаться влево пока это условие не выполнится, далее переносы и осуществлять также.

Есть макрос
<!--shcode--><pre><code class='vb'>Sub jurnal()
l = 1
s = Worksheets("Лист1").Cells(l, 4).Value
While Len(s) > 0
s = Worksheets("Лист1").Cells(l, 4).Value
If Len(s) > 65 Then
Worksheets("Лист1").Cells(l, 4).Value = Left(s, 65)
Worksheets("Лист1").Rows(l + 1).Insert
Worksheets("Лист1").Cells(l + 1, 4).Value = Right(s, Len(s) - 65)
End If
l = l + 1
Wend
End Sub[/CODE]
как его поправить чтобы он работал так же, но при достижении в тексте определенного фрагмента (в 21 символ), который нельзя разделить и если этот фрагмент не укладывается в условие 65 символов в ячейке, то происходит перенос на новую ячейку снизу и дальше все также но в этой строке (с неделимым текстом) в любом случае нужно проверить если последние два символа в этой строке не "- " (дефис, пробел)(именно в такой последовательности), то необходимо смещаться влево до тех пор пока последними не станут эти символы, и перенос на новую ячейку снизу, далее все также.

Заранее благодарен.
 
A

alex777

#2
при достижении в тексте определенного фрагмента
Надо знать фрагмент и проверять его наличие в 65 символах

что-то типа:
If Len(s) > 65 Then

if Instr(1, Left(s, 65), фрамент) > 0 Then
Dim N ' начало фрагмента
Dim P ' позиция " -"
N = Instr(1, Left(s, 65), фрамент) - 1
P = Instr(1, Left(s, 130), " -") - 1
здесь код добавления ячейки. Перенос в новую ячейку кода
Worksheets("Лист1").Cells(l + 1, 4).Value = Mid(s, N, P)


End If

Worksheets("Лист1").Cells(l, 4).Value = Left(s, 65)
Worksheets("Лист1").Rows(l + 1).Insert
Worksheets("Лист1").Cells(l + 1, 4).Value = Right(s, Len(s) - 65)

End If