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

时间:2015-07-13 13:27:16

标签: excel vba excel-vba

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

我已经尝试自动调整这些行以正确显示数据,但是当我这样做时,它会自动调整为一行文本。有没有办法让我可以自动调整多行文本,最好是通过VBA?

我之前尝试过使用自动调整大小的代码,但由于我之前说过的问题,自动调整只使其成为一行,因此它无法正常工作

For counter = 1 To entries

    Rows(counter).EntireRow.AutoFit

Next

编辑:我应该提到需要自动调整的单元格是一个合并的单元格,它是文本包装的。抱歉不包括它。

2 个答案:

答案 0 :(得分:0)

如果我的单元格包含长文本,则使用行(计数器).EntireRow.AutoFit将无法显示所有文本。在使用代码之前,我需要将列的宽度设置为最大值:

    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

答案 1 :(得分:0)

问题可能是单元格格式(换行)

试试这种方式

'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

编辑:

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

{{1}}