自动调整一个单元格的行,但不是单元格的所有行

Autofit a row with respect to a cell but not all the rows of the cells

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

加载后,我想 "autofit" 列的单元格(列表对象的所有单元格都有 属性 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 列的单元格的行。

谢谢

在行上打个断点: SRTbl.listcolumns(4).databodyrange.entirerow.autofit .在 IDE 的立即窗格中输入: SRTbl.listcolumns(4).databodyrange.entirerow.select 你会看到整行都被选中了。

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

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

此处令人困惑的地方似乎在于语法,因为您可能希望能够直接从 table 或范围对象调用 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