如何通过vba代码计算封装单元格中的行数?
With Cells(1, 1)
.WrapText = False
height1 = .height
.WrapText = True
height2 = .height
End With
MsgBox height2 / height1 & " Lines"
由于我已经将行高设置为固定的高度(只能看到一行),所以这段代码无法使用。
另外在我的文本中,没有换行,因为数据是通过VBA代码输入的。
先谢谢你了。
一种方法是用未调整单元格的长度减去换行符的单元格长度。
可以使用工作表函数将换行符替换为长度为0的字符串。Substitute
Sub test()
Dim c As Range
Set c = ActiveCell
MsgBox Len(c.Value) - Len(Application.WorksheetFunction.Substitute(c.Value, Chr(10), vbNullString)) & " Linebreak(s)"
End Sub
[更新: Not a linebreak!
]
正如Sid在《中国经济周刊》中所指出的 在excel中,从包裹的单元格中获取前两行文本。 如果使用字体大小(可以改变),这是很棘手的。
我认为最简单的方法是把单元格的内容复制到其他地方(到其他空白行),然后根据该单元格自动匹配该行以获得高度。
比方说,你想计算A1单元格中的行数,你可以这样做。
' Gets the value of the cell (shortcut)
val = Range("A1").value
' Counts the lines by comparing the contents by the themselves
' after removing the line brakes which is character 10.
' This gives back the number of breaks
' so we add 1 to get the number of lines,
' since the last line doesn't have a line break.
lines = Len(val) - Len(Replace(val, Chr(10), "")) + 1