[英]VBA Find function incorrect highlighting
有人可以帮我解决此代码吗?我有两个文本框,当您在第一个文本框上粘贴文本并单击“搜索”按钮时,如果第二个文本框上存在第二个文本框上的确切文本,则会突出显示该文本。 但是,当第二个文本框上的字符串包含换行符/换行符时,它将在文本开头添加一个字符。 这是代码:
Private Sub FindText(ByVal start_at As Integer)
Dim pos As Integer
Dim target As String
target = Textbox1.Text
pos = InStr(start_at, Textbox2.Text, target)
If pos > 0 Then
' We found it.
TargetPosition = pos
Textbox2.SelStart = TargetPosition - 1
Textbox2.SelLength = Len(target)
Textbox2.SetFocus
Else
' We did not find it.
MsgBox "Not found."
Textbox2.SetFocus
End If
End Sub
' Search button
Private Sub cmdSearch_Click()
FindText 1
End Sub
我认为问题在于Textbox将换行符视为单个字符,而Len()
则将CRLF
视为两个字符。 您可能应该计算CRLF
在匹配target
前面的文本中出现的次数,并相应地调整SelStart
。 尝试以下这一行:
Textbox2.SelStart = Len(Replace(Left(target, pos - 1), vbCrLf, "^")) - 1
'Textbox2.SelLength = Len(Replace(target, vbCrLf, "^"))
如果target
可以包含换行符,那么您可能在SelLength
也遇到类似的问题,这就是为什么我离开了第二条带注释的行。 这是通过将两个字符的换行符序列替换为一个单个字符的字符串来实现的。 替换使用什么值是完全任意的,因为结果将被丢弃并且只有长度才是最重要的。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.