Как задать точную высоту строк?
Часто пользователи табличного процессора Эксель сталкиваются с такой ситуацией, когда необходимо задать точную высоту строчки при работе с какой-либо табличной информацией. Подробная инструкция имеет следующий вид:
- На рабочем листе табличного процессора производим выделение необходимых строчек при помощи левой кнопки мыши, точную высоту которым мы планируем задать.
- Кликаем ПКМ по выделенной области рабочего листа.
- На экране отобразилось небольшое контекстное меню. Находим элемент под названием «Высота строки» и жмем по нему ЛКМ.
- На экране появилось окошко под названием «Высота строки». В поле ввода вбиваем необходимую нам высоту строчки в пунктах. Три пункта – примерно один миллиметр.
- После проведения всех манипуляций щелкаем на кнопку «ОК», располагающуюся в нижней части окошка.
- Готово! Мы реализовали указание точной высоты строчки в табличном процессоре Эксель.
Автоподбор высоты ячейки
К сожалению, в объединенных ячейках метод VBA Excel AutoFit не работает. Но есть возможность подогнать ширину или высоту такой ячейки под длину текста с помощью макроса.
Здесь мы рассмотрим макрос для автоподбора высоты ячейки, объединенной с другими по горизонтали в одной строке, которые обычно используются в заголовках электронных таблиц Excel. Для объединенной ячейки должен быть задан перенос текста по словам: .
Высота ячейки будет такой, чтобы уместились все строки, на которые будет разбит контент в зависимости от ширины объединенной ячейки.
Для решения задачи по автоподбору высоты необходимо с помощью кода VBA определить:
- Длину текста (количество символов) в объединенной ячейке.
- Ширину объединенной ячейки. Длина одного символа текста со шрифтом и его размером по умолчанию приблизительно соответствует длине символа, в котором измеряется ширина ячейки.
- Размер шрифта, чтобы рассчитать коэффициент, увеличивающий или уменьшающий высоту ячейки в зависимости от его (шрифта) размера.
Макрос VBA Excel для автоподбора высоты ячейки с учетом размера используемого шрифта:
1 |
SubPodborVysoty() DimmyCell AsRange,myLen AsInteger,_ myWidth AsSingle,kAsSingle,nAsSingle WithSelection ‘Задаем объединенной ячейке перенос текста .WrapText=True ‘Задаем объединенной ячейке такую высоту строки, ‘чтобы умещалась одна строка текста .RowHeight=ActiveCell.Font.Size*1.3 EndWith myLen=Len(CStr(ActiveCell)) ForEachmyCell InSelection myWidth=myWidth+myCell.ColumnWidth Next n=10 k=ActiveCell.Font.Sizen Selection.RowHeight=Selection.RowHeight*_ WorksheetFunction.RoundUp(myLen*kmyWidth,) EndSub |
Переменные:
- myCell — отдельная ячейка в объединенной;
- myLen — длина текста в активной ячейке;
- myWidth — ширина объединенной ячейки;
- k — коэффициент, вносящий поправку в зависимости от размера шрифта;
- n — размер шрифта по умолчанию.*
* Это не точное значение: у меня по умолчанию установлен шрифт Calibri размером 11, но точнее код работает с n = 10. Значение переменной n подбирается опытным путем, так как длина текста зависит от процентного соотношения широких и узких символов, если шрифт не моноширинный. Переменной n можно присваивать и дробные значения для более точного автоподбора высоты.
Максимальная высота строки — 409,5. Если расчетная высота объединенной ячейки окажется больше, будет сгенерирована ошибка.
Данный код VBA Excel работает с выделенной ячейкой. Вы можете задать список адресов объединенных ячеек и пройтись макросом по каждой из них.
Когда невозможно сделать автоподбор высоты строки
Случаются неприятные ситуации, когда все вышеприведенные способы не позволяют реализовать автоматический подбор высоты строки. Чаще всего причина неправильной работы функции заключается в том, что пользователь объединил ряд ячеек между собой.
Не забывайте, что автоматический подбор высоты строчки не применяется к объединенным ячейкам. В случае совмещения ячеек придется осуществлять процедуру подбора оптимальных параметров самостоятельным образом. Здесь существует два варианта решения данной проблемы:
- Ручное растягивание границ при помощи зажатия ЛКМ.
- Применение функции точного задания высоты строчки.
В любом случае, целесообразнее не использовать объединение ячеек, а применять «видимость» соединения. Это позволяет применять автоматический подбор высоты строки в табличном процессоре Эксель.
Как выглядит таблица до использования автоподбора, по каким причинам он может понадобиться
Для наглядного примера рассмотрим ситуацию, когда в табличке есть ячейки с объёмной текстовой информацией. Исходная таблица выглядит следующим образом:
Мы прекрасно видим, что здесь находится много ячеек, в которых не поместился введенный текст. В этой ситуации пользователю нельзя увеличивать ширину столбиков, так как при печати вся табличка не уместится на бумажном листе. Для корректного отображения всех данных, находящихся в ней, необходимо применить один из способов автоматического подбора высоты строки. О всех методах вы можете узнать, прочитав информацию, располагающуюся ниже.
5 ответов
Убедитесь, что в ячейках с разрывами строки включен параметр «Перенос текста». Вы можете включить его с помощью VBA так:
Автоподбор не работает для объединенных ячеек. Я предполагаю, что это то, что вы пытаетесь сделать.
Обойдите это, смоделировав автоподгонку для одной ячейки с той же шириной, что и ваша объединенная ячейка, и установите высоту, которую она дает.
Что-то вроде этого:
Вы могли сделать:
Я решил проблему с этим — у меня была строка с двумя объединенными ячейками, каждая из которых содержала многострочный текст с переводом строки Chr (10) — с включенным Wrap (но на самом деле строки не переносятся — только Chr (10) вызывают новые строки) . Автоподбор не работал из-за объединенных ячеек.
Обходной путь VBA заключался в использовании запасной ячейки в той же строке и заполнении ее тем же количеством Chr (10), которое содержится в одной (любой) из многострочных ячеек. Затем вызовите автоподбор для этой ячейки, теперь содержащей такое же количество невидимых переводов строки. Убедитесь, что в свободной ячейке шрифт и размер совпадают!
Альтернативный метод для других сценариев может заключаться в использовании дополнительного скрытого рабочего листа — установите для одной ячейки ту же ширину столбца, что и ваши объединенные ячейки, скопируйте содержимое, вызовите автозаполнение (которое должно работать с объединенной ячейкой), затем используйте итоговая высота строки из этого.
Один из обходных путей — немного уменьшить ширину столбца для столбца (столбцов), который вызывает проблему с автоматическим подбором, выбрать все строки, которые вы хотите изменить, автоматически настроить высоту строки, дважды щелкнув один из разделителей строк, и, наконец, выполнить автоматическую настройку столбцы из первого шага, дважды щелкнув разделители столбцов. Вероятно, лучше всего работает, если только один или несколько столбцов постоянно содержат больше всего текста в своих ячейках.