Итак, я несколько дней топтался, пытаясь найти способ использовать функцию .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
, если я наберу MIC
в текстовое поле, он вернет подстроку в пределах MICHAEL
в заданный ряд. Поскольку пользователи будут искать строки переменной длины, я не могу установить ограничение на строковое значение. Есть ли надежный пример выполнения этого БЕЗ примера VBA с использованием структуры цикла. Я вижу, что функция поиска Excel не очень надежна, поскольку я не могу установить параметр ExactMatch
. Я просмотрел другие примеры, и они кажутся чрезвычайно абстрактными и плохо объясняют, что происходит с получением значений с использованием структуры цикла и преобразованием их из Integer
в String
из ячейки, в которой находится найденный элемент.
Примечание. Да, я использую Excel Interop... Imports Excel = Microsoft.Office.Interop.Excel