#excel #row #height #listobject
#excel #строка #высота #listobject
Вопрос:
У меня есть таблица в Excel (listobject), которая загружает тексты в ячейки в зависимости от определенных критериев.
После загрузки я хотел бы «автоматически подгонять» ячейки столбца (все ячейки listobjects имеют свойство wraptext = true) Но я не хочу автоматической подгонки ячеек столбца 5 (потому что они содержат много строк каждая.
Это код, который у меня есть на данный момент
dim SRTbl as listobject
set SRTbl = thisworkbook.sheets(1).listobjects(1)
' all rows height 14
SRTbl.DataBodyRange.RowHeight = 14
'I would like that the cells of column 4 are autofit-ed
'but NOT the cells of column 5
SRTbl.listcolumns(4).databodyrange.entirerow.autofit
Это не работает, потому что выполняется автоматическая подгонка всей строки. В столбце 5 ячейки содержат многострочный текст, и я хочу автоматическую подгонку только для содержимого ячеек столбца 4
Следующее также не работает:
SRTbl.ListColumns(4).Cells.autofit
На всякий случай, если это не совсем понятно.
Столбец 4 содержит текст, состоящий из 1, 2 или 3 строк.
Столбец 5 содержит текст, имеющий много строк > 10
Я хочу настроить высоту ячеек в соответствии со строками ячеек столбца 4, но не столбца 5.
Спасибо
Комментарии:
1. Если я правильно понимаю, я думаю, вам просто нужно изменить ‘.EntireRow’ на ‘.EntireColumn’. Если вы можете подтвердить, что это то, что вам действительно нужно, я добавлю это в качестве ответа
2. Я просто изменил это в своем коде следующим образом: SRTbl.ListColumns(1).EntireColumn.autofit и это не работает 🙁
3. Похоже, вы пропустили часть DataBodyRange. Попробуйте SRTbl.ListColumns(4).DataBodyRange. Весь столбец. Автоматическая подгонка
Ответ №1:
Поставьте точку разрыва в строке: SRTbl.listcolumns(4).databodyrange.entirerow.autofit
. В непосредственной панели IDE введите: SRTbl.listcolumns(4).databodyrange.entirerow.select
и вы увидите, что выбрана вся строка целиком.
Измените SRTbl.listcolumns(4).databodyrange.entirerow.autofit
на SRTbl.listcolumns(4).autofit
, и это должно сработать.
Комментарии:
1. Спасибо. к сожалению, автоматическая подгонка не является методом listcolumns (методами являются только add, application, count, creator, item, Parent). следовательно, выдается ошибка «объект не поддерживает этот метод). Что касается первой части вашего ответа, это работает, но не решает проблему, поскольку ВСЕ ячейки строки автоматически подгоняются
Ответ №2:
Если мы посмотрим на то, что делал ваш исходный код, он пытался автоматически подогнать каждую ячейку во всем потоке выбранного вами столбца. Вам просто нужно изменить ссылку с .Весь переход к .EntireColumn.
Запутанная вещь здесь, по-видимому, заключается в синтаксисе, поскольку вы могли бы ожидать, что сможете вызывать автоматическую подгонку непосредственно из объектов таблицы или диапазона. Автоматическая подгонка — это функция объекта .EntireColumn, который, в свою очередь, является подмножеством либо .Объекты Range или .DataBodyRange.
Option Explicit
Sub test()
Dim SRTbl As ListObject
Set SRTbl = ThisWorkbook.Sheets(1).ListObjects(1)
'I would like that the cells of column 4 are autofit-ed
SRTbl.ListColumns(4).Range.EntireColumn.AutoFit
End Sub