我有过滤功能,显示我不同的行取决于我写在搜索字段。然后打印这些行,在此之前,我想自动调整一列(W),因为该字段中的文本有时可能很长,有时可能很短。如果它很短,我想在打印前自动调整列以节省保存空间。
我试过一些函数,其中包含. autoreColumn.AutoFit,但考虑到隐藏的行,然后在它们可见的地方自动调整。
范例:
With Range("W4:W1400").SpecialCells(xlCellTypeVisible)
.EntireColumn.AutoFit
End With
或者这个:
Dim mCell As Range
For Each mCell In Range("W2:W2")
mCell.EntireColumn.AutoFit
' If mCell.EntireColumn.ColumnWidth > 50 Then _
' mCell.EntireColumn.ColumnWidth = 50
Next mCell
这里还有一个额外的好处,如果列包含一个额外的长文本,列(W)应该只延伸到50。
:)
2条答案
按热度按时间dxxyhpgq1#
我觉得使用一个临时表来检查临时列宽比循环要容易。
如果未应用过滤器,这也会重置列W的自动调整,而不会创建/删除临时图纸。如果你不想发生这种情况,请删除“**"行。
ghhaqwfi2#
AutoFit
将始终使用最宽的文本设置列宽,无论单元格是否可见。最好的办法是只将可见的单元格复制到(隐藏的)工作表中,在该列上使用“自动调整”,并将计算出的列宽分配给列。下面的例程将执行此操作,它假设工作簿中有一个名为“tmp”的工作表,并且数据。如果需要,可以传递可选的最小或最大列宽。
调用看起来像这样: