Протестируйте полный код VB, чтобы найти ячейку, содержащую значение (точное совпадение), указанное в коде.

У меня есть код TestComplete VB, который возвращает ячейку в файле excel, содержащем значение, указанное в коде.

Проблема в том, что слова, которые ищет код в excel, не являются точным совпадением со значением, указанным в коде.

В vba замена «xlPart» на «xlWhole» дает решение моей проблемы.

Я хочу вернуть только ту ячейку, которая соответствует всему содержимому ячейки.

Код, который я использую,

Function FindCell(sheet, searchRange, Value, returnWhat)

 Dim CellPosition, c, Search_In


 If searchRange = "Entire_Sheet" then
    Set Search_In = sheet.Cells
 else
     Set Search_In = sheet.Range(searchRange)
 End If


  With Search_In
     Set c = .Find(Value)
     If Not c Is Nothing Then

         if returnWhat = "Row_Number" then
           CellPosition = c.row
         elseif returnWhat = "Column_Number" then
           CellPosition = c.column 
         end if

     End If
  End With

  FindCell = CellPosition

End Function

Что я должен отредактировать здесь, чтобы получить решение?


person KeeKu    schedule 17.03.2014    source источник


Ответы (2)


Приведенный ниже код решил мою проблему поиска ячейки, которая содержит точное совпадение со значением, которое я ищу.

Function FindCell(sheet, searchRange, Value, returnWhat)

 Dim CellPosition, c, Search_In
 Dim i, CellArray()


 If searchRange = "Entire_Sheet" then
    Set Search_In = sheet.Cells
 else
     Set Search_In = sheet.Range(searchRange)
 End If


 With Search_In
   Set c = .Find(Value)
   i = 0
   If Not c Is Nothing Then
      firstAddress = c.Address
      Do
        ReDim Preserve CellArray(i)
        CellArray(i) = ColumnLetter(c.column) & c.row
        if c = Value then
           if returnWhat = "Row_Number" then
               CellPosition = c.row
           elseif  returnWhat = "Column_Number" then
              CellPosition = c.column
           End if
        'Log.Message("The Jing value is found in " & CellArray(i))
        Exit Do
        End if
        i = i + 1
       Set c = .FindNext(c)
      Loop While Not c Is Nothing And c.Address <> firstAddress
    End If
 End With

  FindCell = CellPosition

End Function
person KeeKu    schedule 18.03.2014

Этот код работает в VBA, не знаю о VB:

Function FindCell(sheet As Worksheet, searchRange As String, Valuee As Variant, returnWhat As String) As Long
 Dim CellPosition, c, Search_In, r
 CellPosition = -9999
 If searchRange = "Entire_Sheet" Then
    Set Search_In = sheet.Cells
 Else
     Set Search_In = sheet.Range(searchRange)
 End If
  With Search_In
     Set c = Nothing
     For Each r In Search_In
        If r.Value = Valuee Then
            Set c = r
        End If
     Next
     If Not c Is Nothing Then
         If returnWhat = "Row_Number" Then
           CellPosition = c.Row
         Else
           CellPosition = c.Column
         End If
     End If
  End With
  FindCell = CellPosition
End Function
person Gary's Student    schedule 17.03.2014
comment
Нет, это не работает со скриптом vb в TestComplete. Я получаю ошибку времени выполнения VBScript Объект не является коллекцией в строке For Each r In Search_In - person KeeKu; 18.03.2014