[紧急!] 我实现VB记事本“编辑”菜单的“查找功能”有...
发布网友
发布时间:2024-02-12 13:00
我来回答
共1个回答
热心网友
时间:2024-08-18 12:41
问题一:因为“flag as boolean”,为模块级变量,第一次查找之后可能就变为“True”了。“if flag = true”,只是假设。如果flag = true,那么这个true就是山谷一次查找遗留下来的。
问题二:i = MsgBox("找到了""" & Text2 & """", 1 + 48)这个语句中,"找到了""" & Text2 & """"不是“这么多冒号”是引号“"”但是你可能搞错了,不需要那么多。
i = MsgBox("找到了" & Text2, 1 + 48) 就可以了。
还有,把msgbox的值给i ,msgbox当然还能显示。只是因为msgbox有多种用途,这个函数有返回值。你这里可以不用返回值。
问题三:“无论查找什么弹出的对话框都是“没有找到“text2””,那是因为在使用“n = InStr(s, Text2)”之前你没有给s赋值,s一直是空的,当然什么也找不到了!
正确的代码应该是:
Dim s$, k As Integer, flag As Boolean
Private Sub Command1_Click()
Dim s1$, s2$, L1%, L2%, n%
Static x As Integer
s = Text1.Text '注意这一句,非常必要啊!
If flag = True Then x = 0: k = 1: flag = False
If Check1.Value = 1 Then
If Option2.Value = True Then
n = InStr(s, Text2)
If n > 0 Then
Text1.SetFocus
x = x + n
i = MsgBox("找到了" & Text2, 1 + 48)
Text1.SelStart = x - 1
Text1.SelLength = Len(Text2)
s = Mid(s, n + 1)
Else
MsgBox ("没有找到" & Text2)
End If
End If
End If
End Sub