2

我在一个单元格中有如下值,在字符串值之间输入键(返回)值可能是,有时单元格可以有更多的值,而有时可能是更少的值。我只想将单元格拟合为 XYZ 和 ABC 值(或单元格中有多少个)。

我尝试了 Autofit 选项但没有用

"XYZ <enter key>    
 ABC <enter key>
 <enter key>
 <enter key>
 <enter key>"

如何使用 VBA 代码实现这一点?

4

3 回答 3

0

我认为您想调整单元格的大小,就好像它没有尾随<enter key>

即大小

"XYZ <enter key>    
 ABC <enter key>
 <enter key>
 <enter key>
 <enter key>"

好像它是

"XYZ <enter key>    
 ABC"

为此,您需要计算所需的高度。尝试这个:

Sub AdjustCell()
    Dim RwHeight As Long
    Dim NumLines1 As Long, NumLines2 As Long
    Dim a() As String

    With ActiveCell
        If .Value = "" Then Exit Sub
        .EntireColumn.ColumnWidth = 255
        .EntireColumn.AutoFit
        .EntireRow.AutoFit

        RwHeight = .RowHeight
        a = Split(CStr(.Value), vbLf)
        NumLines1 = UBound(a)
        NumLines2 = NumLines1
        Do While a(NumLines2) = ""
            NumLines2 = NumLines2 - 1
        Loop
        .EntireRow.RowHeight = (NumLines2 + 2) / (NumLines1 + 2) * RwHeight
    End With
End Sub

这假设活动单元格包含行中最大的单元格(按高度)

于 2013-05-08T07:11:03.397 回答
0

您可以使用 Autofit VBA 方法,如以下示例(MSDN 链接)所示:

Worksheets("Sheet1").Columns("A:I").AutoFit

我希望它会有所帮助。问候, AB

于 2013-05-08T00:57:01.660 回答
0

AutoFit方法应该做你想做的。尝试这个:

ActiveCell.EntireRow.AutoFit
ActiveCell.EntireColumn.AutoFit

或者:

Range("A1").EntireRow.AutoFit
Range("A1").EntireColumn.AutoFit

等等。

于 2013-05-08T00:57:41.200 回答