Выражение может выглядеть довольно сложным на первый взгляд, вы можете разделить его, чтобы сделать вещи более простой, вот пример с комментариями:
' get target sheet name
sTargetSheet = p_objReportActual.Reportname
' get the value which need to be found
vToFind = objEachAnalysis.Analysis
' get the sheet object
Set oSheet = ActiveWorkbook.Sheets(sTargetSheet)
' get actually all cells within row 2 as init range
Set oInitRange = oSheet.Range(Range("A2"), Range("A2").End(xlToRight))
' get the range to search in as init range shifted by 1 row up
Set oSearchRange = oInitRange.Offset(-1, 0)
' get the first cell where the value found
Set oFoundCell = oSearchRange.Find(vToFind, , , xlWhole)
' get result cell shifted by 2 row down
Set oResultCell = oFoundCell.Offset(2, 0)
' show the cell on the sheet
oResultRange.Select
Теперь очевидно, что .Find()
это просто метод объекта диапазона , вы можете легко найти раздел справки в MSDN для этого метода, как указано в комментариях.
Пожалуйста, ознакомьтесь с документацией метода '' Find' '(https://msdn.microsoft.com/en-us/library/office/ff839746.aspx) объекта' Range'. – YowE3K