我试图通过遍历各个单元格并对每个这些单元格中的文本运行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
还有其他方法可以代表换行符,所以我可以将其添加到查询中?
答案 0 :(得分:0)
用 Alt + Enter 创建的单元格换行符是vbLf
。
因此,以下方法应该起作用。
InStr(startlocation, text, vbLf)
如果它不起作用,则意味着您做错了其他事情。
如果单元格A1中包含以下数据(在1
和2
之后输入 Alt + Enter )
然后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)