我一直在做一个简单的导入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