针对单元格自动调整一行,但不针对单元格的所有行自动调整

时间:2019-03-13 10:15:47

标签: excel row height listobject

我在Excel中有一个表(listobject),该表根据特定条件将文本加载到单元格中。

加载后,我想“自动拟合”列的单元格(列表对象的所有单元格都具有属性wraptext = true),但是我不希望对列5的单元格进行自动拟合(因为每个单元格包含很多行。 / p>

这是我到目前为止的代码

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列的单元格行。

谢谢

2 个答案:

答案 0 :(得分:0)

在行上放置一个断点: SRTbl.listcolumns(4).databodyrange.entirerow.autofit 。在IDE的立即窗格中,输入: SRTbl.listcolumns(4).databodyrange.entirerow.select,您将看到选中的整个行。

SRTbl.listcolumns(4).databodyrange.entirerow.autofit更改为SRTbl.listcolumns(4).autofit,它应该可以工作。

答案 1 :(得分:0)

如果我们看一下您的初始代码在做什么,则它试图自动调整所选列的EntireRow中的每个单元格。您只需要将引用从.EntireRow更改为.EntireColumn。

这里令人困惑的事情似乎是语法,因为您可能希望能够直接从表或范围对象调用Autofit。 Autofit是.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