Страницы: 1
RSS
Автоподбор высоты строки в зависимости от содержимого ячейки
 
Добрый день. Подскажите как можно сделать автоподбор высоты нескольких строк (1-12) на одном определенном листе в зависимости от текста, который в них вставляется при помощи формул из других листов? То есть на других листах имеются данные, которые вставляются в нужный лист. При этом теста бывает то больше, то меньше. И при этом чтобы высота то увеличивалась, то уменьшалась. При этом ширину ячеек менять не надо, она должна быть фиксированной, и, желательно, чтобы лист сохранялся защищенным.
Пробовал искать для данной задачи решение, смотрел/пробовал макросы, но в них мало что понимаю... Буду благодарен за помощь!
 
Здравствуйте.
Попробуйте на ленте Главная -- группа Ячейки -- кнопка Формат -- Автоподбор высоты строки
Работает только с необъединенными ячейками. Для объединенных ячеек нужен макрос.
Изменено: gling - 01.03.2024 15:12:23
 
Цитата
написал:
Попробуйте на ленте Главная -- группа Ячейки -- кнопка Формат -- Автоподбор высоты строкиРаботает только с необъединенными ячейками. Для объединенных ячеек нужен макрос.
Здравствуйте. Да, это знаю. Но суть в том, что на защищенном листе, на котором нужен автоподбор, одно поле остается доступном для ввода данных, и когда в него подставляется число, то таблица заполняется тексом через формулы с других листов, который то больше, то меньше. Менять каждый раз вручную ширину не очень удобно и тормозит процесс. Идея как раз была в том, чтобы при заполнении поля, ячейки сами автоматически растягивались и сжимались, чтобы и тест был читаемым, и чтобы "пустое" место не оставалось. А потом просто копировать таблицу в нужный файл.
Ячейки необъединенные. Читал тут решения для объединенных, но они не подошли.
 
Применил вот этот макрос
Private Sub Worksheet_Calculate()
  Rows("7:12").EntireRow.AutoFit
End Sub

Но тут проблема в том, что при защите листа нужно ставить галочку "разрешить форматирование строк". А можно ли применить макрос без этого разрешения? Суть в том, чтобы макрос сам выстроил нужную высоту, а пользователь потом не мог сам менять высоту, только взять и скопировать полученную таблицу с данными
 
А попробуйте так,  только 123 надо сменить на ваш пароль листа.
Код
Private Sub Worksheet_Calculate()
ActiveSheet.Unprotect Password:="123"
  Rows("7:12").EntireRow.AutoFit
ActiveSheet.Protect Password:="123"
End Sub 
Изменено: gling - 01.03.2024 21:06:53
 
Пишет:

Runtime error 1004
Метод AutoFit из класса Range завершен неверно

Также писало и в моем варианте при включенной галочки "разрешить форматирование строк".
 
А при снятой защите авто высота работает? В поменяли в макросе пароль на свой? А выложить файл с одной строкой которую надо подогнать по высоте, никак? Пароль можно оставить 123, или вообще без пароля.
Изменено: gling - 01.03.2024 22:26:07
 
По совету gling использовал следующий код:
Цитата
Private Sub Worksheet_Calculate()
   Sheets("Название листа").Unprotect Password:="пароль"
   Sheets("Название листа").Rows("7:12").EntireRow.AutoFit
   Sheets("Название листа").Protect Password:="пароль"
End Sub
Все сработало. Спасибо за помощь, вопрос решен.
Страницы: 1
Наверх