3

我在牢房里有一个 Chr(10)

cell.WrapText = False
cell.EntireRow.AutoFit ' AutoFit works
' ------------ but:
cell.WrapText = True
cell.EntireRow.AutoFit ' AutoFit works only if the cell has less then five lines.

如果我添加一些字符(多一行)- AutoFit 不起作用。文本在第一行和最后一行被剪切。
版本 - 著名的 excel 2010

4

2 回答 2

4

这取决于数据有多大以及列的宽度是多少。行可以扩展的最大高度的原因是409.5 (546 pixels). 如果您手动增加行高,您会注意到在特定高度之后,您将无法增加行高。检查那个高度是多少 :) 宽度的概念也是如此。这适用于行和列。在列的情况下,最大宽度为254.86 (1789 pixels)

我将此代码用于演示目的。

Option Explicit

Sub Sample()
    ActiveCell.WrapText = True
    ActiveCell.EntireRow.AutoFit
    MsgBox ActiveCell.RowHeight
End Sub

看这个截图

这有效

在此处输入图像描述

这不

该行已达到最大值。它不能超越这一点。

在此处输入图像描述

处理此问题的最佳方法是增加列的宽度。

跟进

它不起作用的原因是因为您在该行中有多个包含数据的列,并且您试图只设置 1 个单元格的 WrapText,因此它不起作用。当您有多列数据时,您必须使用cell.EntireRow.WrapText = True而不是ActiveCell.WrapText = True

于 2012-09-22T08:41:16.617 回答
0

一个相关的解决方案,以防它帮助某人。我有“换行文本”的数据和单元格中的换行符,这些数据来自从使用“Char(10)”的公式中复制数据。我需要换行符。

例如,单元格中的数据应如下所示:
城市:纽约 (1950)
国家:美国

但它显示的是这样的:
城市:
纽约 (1950)
国家:
美国

选择列并单击以自动调整导致略有改善:
城市:纽约
(1950)
国家:美国

第二次重复手动自动调整将文本转换为所需格式。
如果一行中有更多以空格分隔的文本,则需要更多的自动调整尝试,最终格式会被完全纠正。

所以在我的 VBA 代码中,我复制了这个并重复了自动调整代码,我知道会解决我的问题的次数:

'Adjust column Width
        wsSched2.Columns("F:CZ").EntireColumn.AutoFit
        DoEvents
        wsSched2.Columns("F:CZ").EntireColumn.AutoFit
        DoEvents
        wsSched2.Columns("F:CZ").EntireColumn.AutoFit

(它可能在没有“DoEvents”的情况下工作。我没试过)

于 2019-03-05T17:59:14.627 回答