我有一个用Excel / VBA编写的应用程序,它读取用UNIX编写的文本文件。这些文件包含有限元建模模拟设置,其中20k +文本文件中的每一行都是单独的设置。我的应用程序搜索特定的设置并以简单的英语将它们返回给用户。特定的行可能如下所示:
model.settings.excitation.modes=50
到目前为止,这行代码用于查找' ='之间的文本。标志和行尾
InStr(1, FileContents, vbLf)
其中FileContents是' ='之后的整个文本文件。符号
我的应用程序上游的某个地方已经改变了假定的回车字符' vbLf'无法找到,但在Notepad ++中查看时显然存在。我的申请取决于找到这个回车,现在它不起作用。
我尝试过使用:
Asc(Mid(AdsFileContentsX, 3, 1))
隔离回车符,但我最后得到了下一行的一个字符,所以它也不起作用。
我也尝试了以下所有内容
InStr(1, FileContents, vbLf)
InStr(1, FileContents, vbCrLf)
InStr(1, FileContents, vbCr)
InStr(1, FileContents, vbNewLine)
InStr(1, FileContents, Chr(10))
InStr(1, FileContents, Chr(13))
但这些都没有找到回车符。
有关如何识别文本文件中使用的回车字符的任何建议吗?
*已编辑以包含我尝试过的所有内容
答案 0 :(得分:4)
您可以测试 ASCII10 或 ASCII13 :
Sub hskdjfh()
v = Range("A1").Value
If InStr(1, v, Chr(10)) > 0 Or InStr(1, v, Chr(13)) > 0 Then
MsgBox "got a return"
Else
MsgBox "no return"
End If
End Sub
修改#1:强>
以下是确定单元格中确切内容的一种方法:
Sub WhatsInThere()
Dim s As String, L As Long
Dim msg As String, i As Long
msg = ""
s = Range("A1").Text
L = Len(s)
For i = 1 To L
msg = msg & vbCrLf & i & vbTab & Mid(s, i, 1) & vbTab & AscW(Mid(s, i, 1))
Next i
MsgBox msg
End Sub
在这种情况下,我在单元格 A1 中的 i 之后放置了 Alt + Enter :
答案 1 :(得分:0)
很确定VBA中有一个错误,我有013 010 013而且vba看不到它,它只看到它是013 010,
使用replace从字符串中删除013 010,然后检查结果是那么另一个013,所以由于这个错误需要2行代码来删除它