Страницы: 1
RSS
Увеличение высоты ячеек для слишком длинного текста
 
Добрый вечер, уважаемые коллеги!

Искал, честно искал в просторах интернета и не нашел решения одного вопроса.

В таблице есть ячейки с оооооочень длинным текстом. Оперативно решение нашел (чтобы побыстрому отдать таблицу руководству) путем объединения нескольких ячеек и увеличением высоты на сколько дает Excel. Получилось оооооооооочень долго.

Возможно ли макросом увеличить высоту строчки по максимальному содержимому в любой из ячеек в строках?
Ширину регулируем сами чтобы уместиться в альбомный лист.
 
http://www.excelworld.ru/forum/10-37003-1  :evil:  
 
В надежде найти решение. Очень нужно к утру. Надеюсь на понимание.
 
Код
Sub RowAutoFit()
Application.ScreenUpdating = False
lRow = Cells(Rows.Count, 2).End(xlUp).Row
For I = 1 To lRow
    Rows(I).EntireRow.AutoFit
Next
Application.ScreenUpdating = True
End Sub
Согласие есть продукт при полном непротивлении сторон
 
Цитата
puh840 написал:
В надежде найти решение.
В данном случае, вы собственными руками уменьшаете свой шанс на получение ответа.
2 раза уже ответил, сие третий
 
Sanja, не увеличивается высота строк =(
 
Вариант:
 
Цитата
puh840 написал: Не увеличивается высота строк
См. файл
Согласие есть продукт при полном непротивлении сторон
 
Sanja, увеличение высоты строк все равно происходит не полностью. Не весь текст отображается.

_Igor_61, вариант с объединением тоже не подходит, потому что таблица состоит из нескольких столбцов которые тоже нужно вписывать в альбомный вид
 
Цитата
puh840 написал:Ширину регулируем сами чтобы уместиться в альбомный лист
Цитата
puh840 написал:
таблица состоит из нескольких столбцов которые тоже нужно вписывать в альбомный вид
Т.е если я правильно Вас понимаю - Вы хотите на на первой странице сделать широким первый столбец, а узкими - остальные, на второй странице - широким второй столбец и узкими остальные???
Цитата
puh840 написал:
решение нашел ... путем объединения нескольких ячеек
Цитата
puh840 написал:Вариант с объединением тоже не подходит
???
Вы уж определитесь, что хотите получить в итоге и покажите желаемый результат (как это должно выглядеть в итоге) в файле.
 
Примерно так выглядит таблица с данными. В желтых ячейках текст больше чем отображается на экране, так как Excel не дает увеличить высоту строки из-за внутренних ограничений. Вот я подумал, что макросом можно увеличить.
 
В последних версиях высота строки на техническом уровне не может превышать 409 пунктов. И выйти за эти пределы не получится вообще никак. Поэтому для Вашего конкретного случая увы, помочь уже нечем...Только разбивать одну ячейку на несколько и...
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
 
Если объединять ячейки по вертикали, то можно высоту объединенной ячейки довести до размера страницы
Владимир
 
Сейчас это и делаем в ручном режиме, увы
 
В сети опубликованы некоторые варианты макросов для автоматического подбора высоты объединенных ячеек (не уверен, что универсальные).
Владимир
 
Цитата
sokol92 написал:
варианты макросов для автоматического подбора высоты объединенных ячеек
Владимир, только с ними проблема. Основной принцип - побор высоты форматированного текста в одиночной ячейке. Но, её высота технически ограничена, следовательно эти макросы вряд ли будут работать. Тут, по идее. нужно разбивать текст на предложения, размещать в двух-трёх последовательных ячейках и подбирать высоту по отдельности, а потом получившиеся высоты для объединения ячеек.
 
Андрей, полностью согласен. У нас в надстройках есть подобный макрос, но для публикации его надо "очистить" от вызова сервисных функций. Для тестирования макросов такого рода выкладываю еще один реальный тест: разделы 5-7 статистической формы 1-Предприятие (источник - "Консультант Плюс") с искусственно измененной высотой строк.
Изменено: sokol92 - 25.01.2018 15:36:20
Владимир
 
Цитата
sokol92 написал:
Для тестирования макросов такого рода выкладываю еще один реальный тест
Пока слабо мне сделать это ;)
По варианту. Пусть есть ячейка с заданной шириной, максимально возможной высотой и не помещающийся в ней текст стандартного шрифта. Эта ячейка - активная. Тогда можно распределить текст по нескольким объединённым по высоте ячейкам таким кодом
Код
Public Sub TextToHeightFit()
    Dim textShape As Shape, cellCount As Long
    Dim pSheet As Worksheet, cellHeight As Single
    Set pSheet = ActiveSheet
    Set textShape = pSheet.Shapes.AddTextbox(msoTextOrientationHorizontal, ActiveCell.Left, ActiveCell.Top, ActiveCell.Width, ActiveCell.Height)
    With textShape.TextFrame2
        .AutoSize = msoAutoSizeShapeToFitText
        .TextRange.Text = ActiveCell.Value
    End With
    cellCount = Application.WorksheetFunction.RoundUp(textShape.Height / ActiveCell.Height, 0)
    If cellCount > 1 Then
        cellHeight = textShape.Height / cellCount
        ActiveCell.Resize(cellCount - 1, 1).EntireRow.Insert Shift:=xlDown
        ActiveCell.Resize(cellCount, 1).Merge
        ActiveCell.Resize(cellCount, 1).EntireRow.RowHeight = cellHeight
    End If
    textShape.Delete
End Sub

Далее, конечно, нужно допиливать. На нескольких текстах, объединение по 3 и 5 ячеек дало требуемый результат.
 
Решение. Высота правда дополнительной строки берется по максимуму. В принципе думаю это возможно сделать, однако не в этом разделе.
Изменено: skais675 - 25.01.2018 16:42:04
 
Цитата
skais675 написал:
Решение.
Что-то мой текст плохо обработало :(
 
Андрей, интересный подход - не встречал ранее.
Владимир
 
Сегодня в ручном режиме как вы и рекомендовали делил текст и объединял ячейки чтобы замостить в альбомный лист.
Благодарю Вас за участие и интересные идеи. Может Excel в следующем релизе разрешит увеличить =)
 
Андрей VG, согласен, нужно дорабатывать, но все равно там последнюю не будет выравнивать как нужно а будет по максимуму. Но все можно сделать, но в этом разделе хватает направления куда копать.
 
Цитата
skais675 написал:
Но все можно сделать
Весь вопрос в том, а нужно ли?
Цитата
puh840 написал:
чтобы побыстрому отдать таблицу руководству
на раз делается через Word  :)
Страницы: 1
Читают тему
Наверх