包含回车返回数据的行自动大小



我一直在做一个简单的导入VBA命令,从另一个excel表格中引入数据,包含我们使用的报告工具的数据。数据以这样一种方式输出,即一个单元格包含多行文本,就好像有人使用alt+enter来编写它以获得回车。

我已经尝试自动调整这些行有数据正确显示,但当我这样做是自动调整到一行文本。是否有一种方法,我可以得到自动大小与多行文本工作,最好通过VBA?

我之前尝试过这个代码使用自动大小,但由于我之前提到的问题,它没有工作,其中自动大小只是使它一行

For counter = 1 To entries
    Rows(counter).EntireRow.AutoFit
Next

编辑:我应该提到需要自动适配的单元格是合并的单元格,它是文本包装的。

如果我的单元格包含长文本,使用Rows(counter). entirrow。自动适配将无法显示所有文本。在使用代码之前,我需要将列的宽度设置为最大值:

    Columns("A:AA").ColumnWidth = 200  'depends on possible max width and which columns
    Columns("A:AA").EntireColumn.AutoFit
    For counter = 1 To entries
        Rows(counter).EntireRow.AutoFit
    Next i

问题可能出在单元格格式(wrap)

试试这个

For counter = 1 To entries
    Rows(counter).WrapText = True
    Rows(counter).EntireRow.AutoFit
Next
编辑:

如果你在不同的行上合并了单元格,你可以尝试这样做:

'I set number of rows and columns only for example
entries = 10
LastCol = 20
Set Rng = Range(Cells(1, 1), Cells(entries, LastCol))
For Each mCell In Rng
    If Not mCell.Value = "" Then
        If mCell.Address <> mCell.MergeArea.Address Then
            mStr = CStr(mCell.Value)
            mLF = 1
            For x = 1 To Len(mStr)
                If Mid(mStr, x, 1) = vbCr Or Mid(mStr, x, 1) = vbLf Then
                    mLF = mLF + 1
                End If
            Next x
            mHeight = mLF * 7 'Set the value you need for each line of text
            Range(mCell.MergeArea.Address).RowHeight = mHeight
        End If
    End If
Next mCell

最新更新