如何使单元格适合单元格中的值

时间:2013-05-08 00:50:16

标签: excel-vba vba excel

我在单元格中有如下的值,在字符串值之间使用enter键(返回)值 可能是,有时候细胞可以有更多的值,有些时间可能是更少的值。我想仅将Cell设置为XYZ和ABC值(或者单元格中有多少个)。

我尝试了自动调整选项,但没有工作

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

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

3 个答案:

答案 0 :(得分:0)

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

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

我希望它会有所帮助。此致,AB

答案 1 :(得分:0)

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

ActiveCell.EntireRow.AutoFit
ActiveCell.EntireColumn.AutoFit

或者:

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

答案 2 :(得分: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

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