如何通过VBA在Excel中检测换行

时间:2019-01-23 01:10:34

标签: excel vba

我试图通过遍历各个单元格并对每个这些单元格中的文本运行InStr函数,来查找各个单元格中的回车符\换行符。以下查询可在大多数单元格中正确找到换行符,但在其中一个单元格中失败。

这些单元格中的所有换行符都添加了相同的内容,即按Alt + Enter。

下面是我正在使用的功能:

InStr(startlocation, text, vbLf)

我也尝试了以下所有方法,但无济于事:

InStr(startlocation, text, Chr(10)) 'this seems to be identical in results to using vbLf
InStr(startlocation, text, Chr(13)) 'No results with this
InStr(startlocation, text, ALT + 10) 'I see this returning some results sometimes, not exactly sure for which character though
InStr(startlocation, text, vbCrLf) 'No results with this

还有其他方法可以代表换行符,所以我可以将其添加到查询中?

2 个答案:

答案 0 :(得分:0)

Alt + Enter 创建的单元格换行符是vbLf

因此,以下方法应该起作用。

InStr(startlocation, text, vbLf)

如果它不起作用,则意味着您做错了其他事情。

如果单元格A1中包含以下数据(在12之后输入 Alt + Enter

enter image description here

然后InStr(1, Range("A1"), vbLf)返回2


例如,您可以使用...

Dim ArrLines As Variant
ArrLines = Split(Range("A1"), vbLf)

将这些行拆分成类似…的数组。

  • ArrLines(0)1
  • ArrLines(1)2
  • ArrLines(2)3

答案 1 :(得分:0)

正如其他人所证实的那样,vbLf确实是识别ALT + Enter引入的换行符的正确字符。我的问题原来是由text的内容如何在换行符前结束一个字符引起的,因此该字符串上的InStr(startlocation, text, vbLf)找不到换行符。将text(使用Mid函数创建)扩展1可以解决此问题。所以:

而不是:text = Mid(entryvalue, delimeterlocation, Len(entryvalue) - delimeterlocation)

我这样做了:text = Mid(entryvalue, delimeterlocation, Len(entryvalue) - delimeterlocation + 1)