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

Тема в разделе "Visual Basic", создана пользователем tem1112, 5 ноя 2009.

  1. tem1112

    tem1112 Гость

    ПОМОГИТЕ

    В ячейках последовательность кодов они разделены между собой " - " (пробел дефис пробел) нужно оставлять в ячейке только 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 символов в ячейке, то происходит перенос на новую ячейку снизу и дальше все также но в этой строке (с неделимым текстом) в любом случае нужно проверить если последние два символа в этой строке не "- " (дефис, пробел)(именно в такой последовательности), то необходимо смещаться влево до тех пор пока последними не станут эти символы, и перенос на новую ячейку снизу, далее все также.

    Заранее благодарен.
     
  2. alex777

    alex777 Гость

    Надо знать фрагмент и проверять его наличие в 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
     
Загрузка...
Похожие Темы - помогите поправить макрос
  1. limbra
    Ответов:
    3
    Просмотров:
    47
  2. NylevoiChelovek
    Ответов:
    5
    Просмотров:
    113
  3. Ruska132
    Ответов:
    49
    Просмотров:
    420
  4. gURaBA_N
    Ответов:
    7
    Просмотров:
    149
  5. uxbmw3w
    Ответов:
    0
    Просмотров:
    69

Поделиться этой страницей