通过vba计算包装单元中的行数
如何通过vba代码计算包装单元中的行数?通过vba计算包装单元中的行数
With Cells(1, 1)
.WrapText = False
height1 = .height
.WrapText = True
height2 = .height
End With
MsgBox height2/height1 & " Lines"
由于我已将行高设置为固定值(只有一行可见),因此此代码不起作用。
同样在我的文本中,由于数据是通过VBA代码输入的,因此不会换行。
在此先感谢。
的一种方法是减去电池的长度与使用的工作表函数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
从
换行符可以用一个0长度的字符串被替换的未调节细胞的长度除去换行符[更新; Not a linebreak!
]
正如Sid在Get first two lines of text from a wraped cell in excel中指出的那样,如果使用字体大小(可以更改),这是非常棘手的。
我认为最万无一失的方法是将单元格的内容复制到其他地方(到否则空白行),并基于该细胞得到高度自动调整该行。
这类似于这个问题的http:// stackoverflow.com/questions/9889002/get-first-two-lines-of-text-from-a-wraped-cell-in-excel/9897363#comment12631761_9897363。如果文本没有换行符(CHR10)+1,那么很多东西都必须考虑,尽管此方法适用于由换行符分隔的行:) – 2012-03-28 08:16:30
@SiddharthRout公平点。虽然基于相同的问候前问题http://stackoverflow.com/a/9902628/641067我认为这是linebreak相关的。啊哈! – brettdj 2012-03-28 09:04:03
啊!是的,你是对的:) – 2012-03-28 09:07:22
如果单元格文本有换行符,那么Dave(Edit:brettdj)在下面建议的将很好地工作。但是,如果它是一个连续的文本,然后看看这个线程。 http://stackoverflow.com/questions/9889002/get-first-two-lines-of-text-from-a-wraped-cell-in-excel/9897363#comment12631761_9897363 – 2012-03-28 08:18:53