VBA无法执行代码

VBA无法执行代码,vba,excel,recordset,Vba,Excel,Recordset,我的问题是,无论我在文本框中键入什么,它都只会执行MsgBox(“Estimate No”&editform.edittext.Value&“is found”),即使数据库中不存在该记录。它应该执行代码 MsgBox(“找不到”&editform.edittext.Value&“”)当数据库中找不到记录时 If editform.OptionButton1.Value = True Then strConnectStr = "something" Qry = "SELECT *

我的问题是,无论我在文本框中键入什么,它都只会执行
MsgBox(“Estimate No”&editform.edittext.Value&“is found”)
,即使数据库中不存在该记录。它应该执行代码
MsgBox(“找不到”&editform.edittext.Value&“”)
当数据库中找不到记录时

If editform.OptionButton1.Value = True Then
    strConnectStr = "something"
    Qry = "SELECT * " & _
          "FROM test.dbo.estimateRegister " & _
          "WHERE test.dbo.estimateRegister.estimateNo = '" & edittext.Text & "%'"

    cnt.Open strConnectStr
    rst.Open Qry, cnt

    If Not rst.EOF Then
        MsgBox ("Estimate No" & editform.edittext.Value & " is found")
        Unload Me
        UserForm2.Show
    Else
        MsgBox ("Unable to find '" & editform.edittext.Value & "'")
    End If
End If

尝试替换此行:

If Not rst.EOF Then
用这条线

If rst.RecordCount <> 0 Then
如果rst.RecordCount为0,则

尝试删除大括号。。。只是MsgBox的“消息”没有区别。我试过了。您是否在出现错误时在
之前的代码中的某个地方恢复下一个
,如果不是rst.EOF,那么…
?如果是这样的话,
rst
可能是
Nothing
或另一个此时没有
.EOF
的对象。我没有任何这样的代码,那么此时什么样的对象是
rst
?您是否尝试过在单步模式下进行调试并查看本地窗口中的
rst
?或者将
rst.RecordCount
分配给一个变量并监视该变量?也许有创纪录的记录?里夫那会发生什么?你有错误吗?你能说得更具体一点吗?
它不起作用了
before@Reeve奇怪的是,它在我这边起作用。顺便说一句,你的第一个代码也能工作。这很奇怪,让我来计算一下,过一会儿再给你回复。