VB从Excel获取数据-验证

用户名

我有一个主要工作的代码,除了我有一个验证错误...我的代码有一个搜索框,我在其中输入了姓氏,意思是,如果输入的姓氏在excel工作表中,则返回一堆信息。这可以按需工作,就像我对在搜索框中没有输入任何数据的验证一样。

当我在搜索框中输入不匹配的内容(即不在Excel工作表中)时,我的验证无效。请参阅以下代码中的“匹配验证”,以了解我的意思。

我只是不知道为什么它不起作用。当我运行代码并输入错误的数据时,我什至都没有收到错误,它只是没有返回错误消息,并且形式冻结了(有点像非停止循环中的错误)。

任何建议都很好,谢谢!下面是一些代码:

    'define objects
    Dim oExcel As Object
    Dim oBook As Object
    Dim oSheet As Object


    'Open a existing workbook and sheet in excel
    oExcel = CreateObject("Excel.Application")
    oBook = oExcel.Workbooks.Open(Filename:="c:\users\timothy\desktop\coding\output.xlsx")
    oSheet = oBook.Worksheets(1)

    Dim getSurname As String = ""
    Dim getFirstname As String = ""
    Dim getAge As String = ""
    Dim getGender As String = ""
    Dim getNum As Integer = 1
    Dim getValidate As Integer = 0    

While oBook.Worksheets(1).Range("A" & getNum).value <> searchInput.Text.ToUpper
        getNum = getNum + 1
    End While

'Length Validation (THIS WORKS)
If Len(searchInput.Text) = 0 Then
    getValidate = getValidate + 1
End If

 'Match validation (THIS DOES NOT WORK)
 If oBook.Worksheets(1).Range("A" & getNum).value <> searchInput.Text.ToUpper Then
     getValidate = getValidate + 1
 End If

If getValidate = 0 Then
    getSurname = oSheet.Range("A" & getNum).Value.ToString
    getFirstname = oSheet.Range("B" & getNum).Value.ToString
    getAge = oSheet.Range("C" & getNum).Value.ToString
    getGender = oSheet.Range("D" & getNum).Value.ToString
    outputData.Text = "SURNAME: " & getSurname & vbCrLf & "FIRSTNAME: " & getFirstname & vbCrLf & "AGE: " & getAge & vbCrLf & "GENDER: " & getGender & vbCrLf
Else
    MsgBox("ERROR!! Please enter valid Quote Number.")
End If
粗糙

本节代码

While oBook.Worksheets(1).Range("A" & getNum).value <> searchInput.Text.ToUpper
        getNum = getNum + 1
    End While

将继续遍历工作表,直到找到匹配项。假设您到了数据的最后一行,但还没有匹配项。下一个“ A”和getNum将为空,这将不是匹配项,因此它将继续While,直到达到行数限制并出错为止。它永远不会找到匹配项,因此也永远不会打中您的支票。

但是,我认为如果您在其中检查以查找那些空白单元格...

 While oBook.Worksheets(1).Range("A" & getNum).value <> searchInput.Text.ToUpper
        if oBook.Worksheets(1).Range("A" & getNum).value  = "" then
            exit while
        else
            getNum = getNum + 1
        end if
    End While

,那么我认为它会做您想要做的事情。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章