Исправил макрос, теперь кол-во символов подбирается по ширине ячейки ( в т.ч. и объедененных ячеек), так же по дополнительному параметру указывается количество промежуточных строк.
[vba]
Code
Option Explicit Private Sub Worksheet_Change(ByVal Target As Range) Dim a$, i#, nach#, konch#, ch#, param#, st_par#, koef# st_par = 8 'Номер правого столбца формы, тот столбец, который находится слева от столбца с параметром koef = 0.17 'Для увеличения кол-ва символов в строке, для разных шрифтов и их размеров On Error Resume Next param = Cells(Target.Row, st_par + 1) If param = 0 Then Exit Sub Application.EnableEvents = False a = Target.Value If Int(Target.MergeArea.Width * koef) < Len(a) Then nach = 1: ch = 0: i = 1 konch = InStr(Int(Cells(Target.Row, st_par).MergeArea.Width * koef), a, " ") Do While ch <= 1 Cells(Target.Row + i * param - param, Target.Column).MergeArea = Mid(a, nach, konch) nach = nach + konch konch = InStr(nach + Int(Cells(Target.Row + i * param, st_par).MergeArea.Width * koef), a & " ", " ") - nach If konch <= 0 Then konch = Int(Cells(Target.Row + i * param, st_par).MergeArea.Width * koef): ch = ch + 1 i = i + 1 Loop End If Application.EnableEvents = True End Sub
[/vba]
Исправил макрос, теперь кол-во символов подбирается по ширине ячейки ( в т.ч. и объедененных ячеек), так же по дополнительному параметру указывается количество промежуточных строк.
[vba]
Code
Option Explicit Private Sub Worksheet_Change(ByVal Target As Range) Dim a$, i#, nach#, konch#, ch#, param#, st_par#, koef# st_par = 8 'Номер правого столбца формы, тот столбец, который находится слева от столбца с параметром koef = 0.17 'Для увеличения кол-ва символов в строке, для разных шрифтов и их размеров On Error Resume Next param = Cells(Target.Row, st_par + 1) If param = 0 Then Exit Sub Application.EnableEvents = False a = Target.Value If Int(Target.MergeArea.Width * koef) < Len(a) Then nach = 1: ch = 0: i = 1 konch = InStr(Int(Cells(Target.Row, st_par).MergeArea.Width * koef), a, " ") Do While ch <= 1 Cells(Target.Row + i * param - param, Target.Column).MergeArea = Mid(a, nach, konch) nach = nach + konch konch = InStr(nach + Int(Cells(Target.Row + i * param, st_par).MergeArea.Width * koef), a & " ", " ") - nach If konch <= 0 Then konch = Int(Cells(Target.Row + i * param, st_par).MergeArea.Width * koef): ch = ch + 1 i = i + 1 Loop End If Application.EnableEvents = True End Sub
Что значит "не последовательно"? Рисунок видел. Зачем "фигурное катание"? Это шаблон? Непонятно: вывод текста всегда в желтые ячейки, минуя белые, или рисунок "бело-желтых" может меняться? Формулы или макрос? Что делать, если тексту мало закрашенных ячеек? Что делать, если текст не дорос до количества желтых ячеек?
Что значит "не последовательно"? Рисунок видел. Зачем "фигурное катание"? Это шаблон? Непонятно: вывод текста всегда в желтые ячейки, минуя белые, или рисунок "бело-желтых" может меняться? Формулы или макрос? Что делать, если тексту мало закрашенных ячеек? Что делать, если текст не дорос до количества желтых ячеек?vikttur
непоследовательно - это значит что ячейки находятся не друг под другом фигурное катание необходимо. там документ такой. желательно формулы текст небольшой. ему хватит желтых ячеек если не дорос до всех ячеек, надо чтобы остальные остались пустыми будет переход именно так как показано в файле надо чтобы текст начался в G4 и мог дойти до D9
непоследовательно - это значит что ячейки находятся не друг под другом фигурное катание необходимо. там документ такой. желательно формулы текст небольшой. ему хватит желтых ячеек если не дорос до всех ячеек, надо чтобы остальные остались пустыми будет переход именно так как показано в файле надо чтобы текст начался в G4 и мог дойти до D9aleksasha888
aleksasha888, как в Вашем файле уменьшить количество символов в строке перед переносом? Я решил, что это 45 в формуле, в 2 местах, пробовал уменьшить - только все ячейки с текстом переносятся на ячейку ниже. Заранее спасибо за ответ!
Цитата (aleksasha888)
К сообщению приложен файл: 2131998.xls(30Kb)
aleksasha888, как в Вашем файле уменьшить количество символов в строке перед переносом? Я решил, что это 45 в формуле, в 2 местах, пробовал уменьшить - только все ячейки с текстом переносятся на ячейку ниже. Заранее спасибо за ответ!kero
Правильно решили. И сделали правильно. Только вот формулу в ячейке надо было после этого ввести как формулу массива ({Ctrl+Shift+Enter}). Ну и я бы это "45" заменил на ссылку на ячейку (или имя), чтобы можно было управлять длиной отрезаемой части динамически.
Цитата (kero)
Я решил, что это 45 в формуле
Правильно решили. И сделали правильно. Только вот формулу в ячейке надо было после этого ввести как формулу массива ({Ctrl+Shift+Enter}). Ну и я бы это "45" заменил на ссылку на ячейку (или имя), чтобы можно было управлять длиной отрезаемой части динамически.AndreTM