Доброго времени суток товарищи! Необходимо допилить макрос. При вставке в определенный диапазон, не влезает всё скопированное. Нужно дописать чтобы скопированный текст, вставлялся в ячейки E4-L4 и ниже на две три строки.
Может кто ссылкой может поделиться, где можно черпануть информации!
вам не проще сделать объединение и автоперенос? Просто если делать правильно, то нужно делать расчет ширины ячейки и количество символов видимых исходя из размера шрифта, что не благодарно, раз есть инструмент автоматический.
можно сделать примерно так, только у Вас и во вторую объединенную ячейку не помещается остаток. Выделяете ячейку, которую надо разбить, запускаете макрос
Код
Sub per()
Dim rc As Range
Set rc = ActiveCell
With rc.MergeArea
iw = .Columns(.Columns.Count).Column - rc.Column + 1
For Each CurrCell In .Columns
MergedC_Widht = CurrCell.ColumnWidth + MergedC_Widht
Next
OldC_Widht = .Cells(1, 1).ColumnWidth
.MergeCells = False
.EntireColumn.AutoFit
NewC_Widht = .Cells(1).EntireColumn.ColumnWidth
.MergeCells = True
.ColumnWidth = OldC_Widht
End With
l = Int(Len(rc.Value) * MergedC_Widht / NewC_Widht) + 1
a = Left(rc.Value, l)
b = Mid(rc.Value, l + 1)
rc.Value = a
rc.Offset(1, -4).Value = b
End Sub
БМВ, думаю размер шрифта тут не нужен. Мы снимаем объединение, делаем автовыравнивание (тут шрифт и учтен), запоминаем ширину, возвращаем все назад, и по проценту старой ширины объединенной ячейки к автовыравненной ширине бьем строку на две части
yozhik написал: и по проценту старой ширины объединенной ячейки к автовыравненной ширине бьем строку на две части
в этом то и подвох, процент символов не сможет совпасть, так как в массе шрифтов ширина символов разная, то есть может набежать погрешность, особенно на спец символах.
БМВ, согласен, может некорректно отобразиться в некоторых случаях, но по примеру у нас переносится большая часть текста, одно другое скомпенсирует..) вариант с проверкой шрифта правильней конечно, но возиться больше...)
Нормальных решений я не знаю... И, даже, дело не в объединенных ячейках, которые следует максимально избегать... Тут дело в том, что потребуется эталонная(ые) ячейки равные по ширине ячейкам шаблона (не объединенные, а там их две строки разной длины, а если и в две строки не влезет?) с тем же шрифтом, что и в шаблоне. И вся эта фигня будет медленная, ибо использует автоподбор по высоте методом последовательного приближения с шагом по слову (одна надежда что шаблон не многострочный). Проще изменить подход и, при этом, повысить надежность файла, но если надо такого монстра, то накатаю...
БМВ, алгоритм формирования длины строки в textbox другой, нежели в ячейке, кроме того размеры шрифтов по разному обсчитываются... И того там может так набежать, что мало не покажется...
я не проверил скорость работы с использованием листа, с текстбоксом работает, но скорость мен убивает. Никаких проблем с искажением размеров не наблюдаю.
AAF, skais675, да набегает. Нашел один изъян у skais675, Перенос осуществляется на любом знаке, что не совсем правильно. Не знаю, я б на месте ТС , сделал бы объединенную ячейке A4:L5 и добавил бы перед значением "Наменование продукции"
Может я что-то не понимаю. Не легче выставить в стороннюю ячейку в качестве константы кол-во символов, которое умещается в одну ячейку, А формулами делать перенос, если кол-во символов превысит данное значение. И в качестве разделителей задать только определенные символы(пробел, запятая, точка и т.д...) Тогда пользователь меняя кол-во символов, сможет подгонять сам под виды и и размеры шрифта.
Eco написал: в качестве константы кол-во символов, которое умещается в одну ячейку
Это не константа, это переменная, зависящая от шрифта, размер и жирности ,от набора символов. Последнее наиболее актуально, так как информация меняется.