Почему не работает автоподбор высоты строки в excel
Argument ‘Topic id’ is null or empty
Сейчас на форуме
© Николай Павлов, Planetaexcel, 2006-2023
info@planetaexcel.ru
Использование любых материалов сайта допускается строго с указанием прямой ссылки на источник, упоминанием названия сайта, имени автора и неизменности исходного текста и иллюстраций.
| ООО «Планета Эксел» ИНН 7735603520 ОГРН 1147746834949 |
ИП Павлов Николай Владимирович ИНН 633015842586 ОГРНИП 310633031600071 |
Excel. Автоподбор высоты строки не работает.
Добрый день! Вопрос следующий — Почему при длинном тексте и галочки «Перенос текста», при условии, что текст находится в одной ячейке, автоподбор высоты строки работает корректно, Но! стоит этот текст объединить в 2 ячейки, автоподбор высоты строки перестаёт корректно работать и просто не видит, что текст переносится ниже. Как вылечить эту проблему? Таблицы бывают разные, проблема частая. 
Голосование за лучший ответ
Проблема с автоподбором высоты строки в Excel при объединении ячеек может возникнуть из-за особенностей объединения ячеек и настроек форматирования. Вот как это можно исправить:
1. **Отменить объединение ячеек:** Первым шагом рекомендуется отменить объединение ячеек, если оно не обязательно для вашего дизайна таблицы. Объединенные ячейки могут вызывать проблемы с автоподбором высоты строки.
2. **Настроить перенос текста в каждой ячейке:**
— Для каждой ячейки, в которую вы хотите поместить текст, убедитесь, что включена опция «Перенос текста». Это можно сделать, выбрав ячейку или ячейки, затем перейдите на вкладку «Главная» и в разделе «Выравнивание» выберите «Перенос текста».
3. **Регулировать высоту строк вручную:** Если автоподбор высоты строки все равно не работает как ожидалось, вам может потребоваться регулировать высоту строк вручную. Выделите строки, которые нужно настроить, затем правой кнопкой мыши выберите «Высота строки» и задайте необходимую высоту.
4. **Избегать слишком большого объема текста:** Помните, что слишком много текста в ячейке, даже с переносом текста, может вызвать проблемы с отображением. Постарайтесь разбить текст на более мелкие ячейки, если это возможно, чтобы улучшить читаемость и управление высотой строк.
Следуя этим шагам, вы должны быть способными настроить автоподбор высоты строки так, чтобы он корректно работал в вашей таблице Excel, даже если у вас есть объединенные ячейки.
FTJЗнаток (279) 2 месяца назад
Добрый день!
П.1 и П.4 — глупости, это не решение проблемы. Формы таблиц унифицированы, а текст бывает разный, это информация, которую нельзя урезать.
П.2 — повторюсь, в описание есть уточнение и в скриншотах так же видно, что перенос текста включен.
П.3 — Речь в вопросе идёт о автоподборе высоты строк, что бы не тратить время на ручные настройки, таких строк могут быть сотни, тысячи.
Нужна автоматизация.
FTJ, нужно писать макрос
К сожалению, это косяк Экселя.
Либо вручную как-то нужно это сделать, либо искать решение через VBA, т.е. писать свою процедуру Автовыравнивания.
У меня последнее время вообще складывается впечатление что Word и Excel в каких-то моментах стали заброшенными разработчиками.
Почему не работает автоподбор высоты строки в excel
Скопируйте в свой файл код макроса — весь выделенный цветом текст
Sub AutofitRowHeightWithMerge()
‘макрос работает по заранее выделенному диапазону ЯЧЕЕК, НЕ СТРОК
Applicat ion.DisplayAlerts = False
Selection.WrapText = True ‘включить перенос текста в ячейках
‘запомнить текущий лист
Set sh1 = ActiveWorkbook.ActiveSheet
‘Сделать копию листа
ActiveSheet.Copy: Set Sh2 = ActiveWorkbook.ActiveSheet
nc = Selection.Columns.Count ‘кол-во столбцов в выделении
nc1 = Selection.Column ‘номер первого столбца в выделении
nc2 = nc1 + nc — 1 ‘номер последнего столбца в выделении
nr = Selection.Rows.Count ‘кол-во строк в выделении
nr1 = Selection.Row ‘номер первой строки в выделении
nr2 = nr1 + nr — 1 ‘номер последней строки в выделении
‘сумма ширин всех столбцов в выделении
For i = nc1 To nc2
wc = wc + Columns(i).ColumnWidth
Next
‘Debug.Print wc
Selection.UnMerge ‘отменить объединённые ячейки
Columns(nc1).ColumnWidth = wc
If wc > 254.86 Then
MsgBox «Слишком много столбцов! Общая ширина выделения должна быть не более 254,86!», vbCritical
Application.DisplayAlerts = True
Exit Sub
End If
For i = nr1 To nr2
Rows(i).AutoFit ‘автоподбор высоты строки
rh = Rows(i).RowHeight ‘записать получившуюся высоту строки
‘если ниже пусто, считать кол-во пустых строк
Do While Cells(i + 1 + q, nc1) = «» And i + 1 + q q = q + 1
Loop
If q = 0 Then
rh = rh
Else: rh = rh / (1 + q) ‘(разделить высоту на получившееся число строк)
End If
If rh > 409 Then
MsgBox «Получается слишком большая высота строки! Я умею настраивать максимум 409!», vbCritical
Application.DisplayAlerts = True
Exit Sub
End If
sh1.Rows(i).Resize(1 + q).RowHeight = rh
i = i + q ‘пересчёт номера i
q = 0 ‘очистка переменной
Next i
ActiveWorkbook.Close SaveChanges:=False
Application.DisplayAlerts = True
End Sub
Как вставить этот код в свой файл, я показываю на тематическом уроке Макрос напрокат. Вы можете посмотреть его запись: https://excelforum.autoweboffice.ru/?r=ordering/cart/as1&id=49&clean=true&lg=ru
По уровню сложности такой макрос можно написать после моего онлайн курса «Макросы на VBA с нуля».
покупка
Как автоматически подогнать высоту строки объединенных ячеек в Excel?
В Excel мы можем быстро настроить высоту строки, чтобы она соответствовала содержимому ячейки, используя Автоподбор высоты строки функция, но эта функция полностью игнорирует объединенные ячейки. То есть вы не можете применить Автоподбор высоты строки функция для изменения размера строки объединенных ячеек, вам необходимо вручную настроить высоту строки для объединенных ячеек одну за другой. В этой статье я могу представить несколько быстрых методов решения этой проблемы.
Автоматическая установка высоты строки объединенных ячеек с кодом VBA
Предположим, у меня есть рабочий лист с некоторыми объединенными ячейками, как показано на следующем снимке экрана, и теперь мне нужно изменить размер высоты строки ячейки, чтобы отобразить все содержимое, приведенный ниже код VBA может помочь вам автоматически подогнать высоту строки нескольких объединенных ячеек, пожалуйста, сделайте следующим образом:

1. Удерживайте ALT + F11 ключи, и он открывает Окно Microsoft Visual Basic для приложений.
2. Нажмите Вставить > Модулии вставьте следующий код в Окно модуля.
Код VBA: автоматическая установка высоты строки из нескольких объединенных ячеек
Option Explicit Public Sub AutoFitAll() Call AutoFitMergedCells(Range("a1:b2")) Call AutoFitMergedCells(Range("c4:d6")) Call AutoFitMergedCells(Range("e1:e3")) End Sub Public Sub AutoFitMergedCells(oRange As Range) Dim tHeight As Integer Dim iPtr As Integer Dim oldWidth As Single Dim oldZZWidth As Single Dim newWidth As Single Dim newHeight As Single With Sheets("Sheet4") oldWidth = 0 For iPtr = 1 To oRange.Columns.Count oldWidth = oldWidth + .Cells(1, oRange.Column + iPtr - 1).ColumnWidth Next iPtr oldWidth = .Cells(1, oRange.Column).ColumnWidth + .Cells(1, oRange.Column + 1).ColumnWidth oRange.MergeCells = False newWidth = Len(.Cells(oRange.Row, oRange.Column).Value) oldZZWidth = .Range("ZZ1").ColumnWidth .Range("ZZ1") = Left(.Cells(oRange.Row, oRange.Column).Value, newWidth) .Range("ZZ1").WrapText = True .Columns("ZZ").ColumnWidth = oldWidth .Rows("1").EntireRow.AutoFit newHeight = .Rows("1").RowHeight / oRange.Rows.Count .Rows(CStr(oRange.Row) & ":" & CStr(oRange.Row + oRange.Rows.Count - 1)).RowHeight = newHeight oRange.MergeCells = True oRange.WrapText = True .Range("ZZ1").ClearContents .Range("ZZ1").ColumnWidth = oldZZWidth End With End Sub
Ноты:
(1.) В приведенном выше коде вы можете добавлять новые диапазоны, просто скопируйте Вызов AutoFitMergedCells (Range («a1: b2»)) скрипт столько раз, сколько захотите, и измените диапазоны объединенных ячеек по своему усмотрению.
(2.) И вы должны изменить имя текущего рабочего листа. Sheet4 к имени используемого вами листа.
3, Затем нажмите F5 ключ для запуска этого кода, и теперь вы можете видеть, что все объединенные ячейки были автоматически подогнаны под их содержимое, см. снимок экрана:

Связанная статья:
