Поиск  Пользователи  Правила 
Закрыть
Логин:
Пароль:
Забыли свой пароль?
Регистрация
Войти
 
Страницы: 1 2 След.
RSS
Макрос на перенос слов на следующую строку
 
Доброго времени суток товарищи!
Необходимо допилить макрос.
При вставке в определенный диапазон, не влезает всё скопированное. Нужно дописать чтобы скопированный текст, вставлялся в ячейки E4-L4 и ниже на две три строки.

Может кто ссылкой может поделиться, где можно черпануть информации!
Изменено: outsider_cmp - 8 июн 2018 18:15:09
 
Может есть знающие люди, может невозможно допилить этот макр?
 
вам не проще сделать объединение и автоперенос? Просто если делать правильно, то нужно делать расчет ширины ячейки и количество символов видимых исходя из размера шрифта, что не благодарно, раз есть инструмент автоматический.
По вопросам из тем форума, личку не читаю.
 
нет, к сожалению нельзя сделать объединение. Там определенный документ, который двигать нельзя, как сделать макрос?
 
outsider_cmp, не жмите кнопку цитирования без необходимости - она для цитирования, а не для ответа.
 
можно сделать примерно так, только у Вас и во вторую объединенную ячейку не помещается остаток. Выделяете ячейку, которую надо разбить, запускаете макрос
Код
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

основу взял отсюда:
https://www.excel-vba.ru/chto-umeet-excel/podbor-vysoty-strokishiriny-stolbca-obedinennoj-yachejki/
 
yozhik,  мне кажется в Вашем варианте не учитывается размер шрифта, или я ошибаюсь?
По вопросам из тем форума, личку не читаю.
 
БМВ, думаю размер шрифта тут не нужен. Мы снимаем объединение, делаем автовыравнивание (тут шрифт и учтен), запоминаем ширину, возвращаем все назад, и по проценту старой ширины объединенной ячейки к автовыравненной ширине бьем строку на две части
 
Цитата
yozhik написал:
и по проценту старой ширины объединенной ячейки к автовыравненной ширине бьем строку на две части
в этом то и подвох, процент символов не сможет совпасть, так как в массе шрифтов ширина символов разная, то есть может набежать погрешность, особенно на спец символах.
По вопросам из тем форума, личку не читаю.
 
yozhik, макрос просто на просто удалил то, что не влезает в определенную строчку, но не переносит оставшийся текст ниже.  
 
Цитата
rc.Offset(1, -4).Value = b
outsider_cmp написал: но не переносит оставшийся текст ниже
вон та строчка с офсетом как раз и переносит. По крайней мере в том примере, что Вы приложили
Цитата
БМВ написал:
процент символов не сможет совпасть
БМВ, согласен, может некорректно отобразиться в некоторых случаях, но по примеру у нас переносится большая часть текста, одно другое скомпенсирует..) вариант с проверкой шрифта правильней конечно, но возиться больше...)
 
Нормальных решений я не знаю...
И, даже, дело не в объединенных ячейках, которые следует максимально избегать...
Тут дело в том, что потребуется эталонная(ые) ячейки равные по ширине ячейкам шаблона (не объединенные, а там их две строки разной длины, а если и в две строки не влезет?) с тем же шрифтом, что и в шаблоне.
И вся эта фигня будет медленная, ибо использует автоподбор по высоте методом последовательного приближения с шагом по слову (одна надежда что шаблон не многострочный).
Проще изменить подход и, при этом, повысить надежность файла, но если надо такого монстра, то накатаю...
 
Привел пример. Смысл поймете.
Изменено: skais675 - 9 июн 2018 18:14:02
 
skais675,  идея и хороша и ужасна :-) . Думаю лучше использовать не лист, а скрытый textbox и Autosize. Ужасна только перебором :-)
По вопросам из тем форума, личку не читаю.
 
БМВ, Текст бокс не впишется, увы...  :(
 
AAF,  Почему?
По вопросам из тем форума, личку не читаю.
 
БМВ, алгоритм формирования длины строки в textbox другой, нежели в ячейке, кроме того размеры шрифтов по разному обсчитываются...
И того там может так набежать, что мало не покажется...  :D
 
я не проверил скорость работы с использованием листа, с текстбоксом работает, но скорость мен убивает. Никаких проблем с искажением размеров не наблюдаю.
По вопросам из тем форума, личку не читаю.
 
Цитата
БМВ написал:
Никаких проблем с искажением размеров не наблюдаю.
При разных фонтах и их размерах?
 
Если не ошибаюсь при изменении масштаба размеры разойдутся (незначительно, но все же).  
Изменено: skais675 - 9 июн 2018 22:13:54
 
AAF, skais675,  да набегает.  Нашел один изъян у skais675, Перенос осуществляется на любом знаке, что не совсем правильно.
Не знаю, я б на месте ТС , сделал бы объединенную ячейке A4:L5 и добавил бы перед  значением "Наменование продукции"
По вопросам из тем форума, личку не читаю.
 
Цитата
БМВ написал:
и добавил бы перед  значением "Наменование продукции"
Я, как правило, во всяких таких зловещих формах стараюсь так и делать.  :D
 
AAF, ну я то теоретик - любитель. На практике все эти знания не применяю :-)
По вопросам из тем форума, личку не читаю.
 
Цитата
БМВ написал:
Нашел один изъян у  skais675 ,
Исправил. Переносит по словам, при разделителе - пробел.
Изменено: skais675 - 9 июн 2018 23:00:32
 
Может я что-то не понимаю.
Не легче выставить в стороннюю ячейку в качестве константы кол-во символов, которое  умещается в одну ячейку,
А формулами делать перенос, если кол-во символов превысит данное значение.
И в качестве разделителей задать только определенные символы(пробел, запятая, точка и т.д...)
Тогда пользователь меняя кол-во символов, сможет подгонять сам под виды и и размеры шрифта.
 
Цитата
Eco написал:
в качестве константы кол-во символов, которое  умещается в одну ячейку
Это не константа, это переменная, зависящая от шрифта, размер и жирности ,от набора  символов.  Последнее наиболее актуально, так как информация меняется.
По вопросам из тем форума, личку не читаю.
 
БМВ,ну да. Я хотел сказать. что это константа как ссылка на эту ячейку.
 
Цитата
Eco написал: Может я что-то не понимаю.
Sobes, не понимаете. В зависимости от шрифта, его написания количество символов будет разное.
 
vikttur, В ячейке как раз и содержится кол-во символов, которое может менять пользователь, хоть из раскрывающего списка
 
Цитата
Eco написал:
которое может менять пользователь, хоть из раскрывающего списка
и делать это не только при смене шрифта, но и при смене данных. Ну уж нет. Если так пойдет, то уж проще API привлечь.
По вопросам из тем форума, личку не читаю.
Страницы: 1 2 След.
Читают тему (гостей: 1)
Наверх