VB.Net中的单元格值完全匹配而没有循环

时间:2017-01-05 06:33:52

标签: excel vb.net for-loop do-loops

因此,我试图在我的应用程序中找到使用.Find函数的方法,并且需要找到文本框中键入的值,并返回值和行完全匹配,或显示该值根本不在电子表格中。虽然我有一个没有循环的工作实现,但我在文本框中添加的任何内容都是Substring。这不是我想要的。

我不熟悉VBA,而且我所看到的只有VBA用For Loops来实现这一点的方法,我在找到单元格中的值时运气不佳。我目前正在这样做:

Dim xlApp = New Excel.Application  ' this starts new Excel Application
Dim xlWB = xlApp.Workbooks.Open("C:\Users\Me\Desktop\ExcelValues.xls")
Dim xlWS = xlWB.Worksheets("Sheet1")

Dim Value2Find_1 As String = txtValue1.Text

Dim Range2Use_1 = xlWS.Range("A1:A4000")        'Range to span the A Column.

Dim xlCell_A = Range2Use_1.Find(txtValue1.Text) 'Looks up the searched serial value in A Column.

Dim LastRow = xlWS.Range("A4000").End(Excel.XlDirection.xlUp).Row + 1                      

If Value2Find_1 <> Nothing Then
        Range2Use_1.Find(What:=Value2Find_1, MatchCase:=True)
        MessageBox.Show("Value of " & Value2Find_1 & " found in cell " & xlCell_A.Row)


    Else
        MsgBox("no match...")
End If

我可以得到这个,甚至可以找到工作表中行的值,但即使我使用Value2Find_1的字符串,如MICHAEL,如果我键入{{1在文本框中,它将返回给定行的MIC内的子字符串。因为用户将搜索可变长度的字符串,所以我无法对字符串值设置限制。是否有一个完整的例子来完成这个没有使用循环结构的VBA示例。我发现Excel的查找功能并不可靠,因为我无法设置MICHAEL参数。我已经查看了其他示例,它们看起来非常抽象,并且不能很好地解释使用循环结构获取值并将它们从ExactMatch转换为Integer时发生的情况。找到的项目所在的单元格。

注意:是的,我正在使用Excel Interop ... String

1 个答案:

答案 0 :(得分:0)

LookAt功能中使用参数Find。像下面的东西

Range2Use_1.Find(What:=Value2Find_1, MatchCase:=True, LookAt:=xlWhole)