需要解释VBA代码

需要解释VBA代码,vba,excel,Vba,Excel,我真的不理解这个VBA代码,在这个语句中“find”是什么意思,有人能帮我理解吗 rngOutput = ActiveWorkbook.Sheets(p_objReportActual.Reportname) _ .Range(Range("A2"), Range("A2").End(xlToRight)).Offset(-1, 0) _ .Find(objEachAnalysis.Analysis, , , xlWhole).Offset(2,

我真的不理解这个VBA代码,在这个语句中“find”是什么意思,有人能帮我理解吗

rngOutput = ActiveWorkbook.Sheets(p_objReportActual.Reportname) _
            .Range(Range("A2"), Range("A2").End(xlToRight)).Offset(-1, 0) _
            .Find(objEachAnalysis.Analysis, , , xlWhole).Offset(2, 0)

在代码之前写入
debug.print objEachAnalysis.Analysis

代码将rngOutput设置为比控制台(即时窗口)上打印的找到值低两行

在代码写入
debug.print rngOutput.address
后,在同一即时窗口中查看地址


要查看即时窗口,请在Excel中的Visual Basic编辑器中按ctrl+G。

表达式乍一看可能非常复杂,您可以将其拆分以使事情更简单,下面是带有注释的示例:

    ' 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上找到此方法的帮助主题,如注释所示。

rngOutput是下面第2行的单元格,其中“objEachAnalysis.Analysis”的值位于工作表“p_objReportActual.Reportname”中相邻范围内A2到右侧最后一个单元格和上面第1行的范围内


因此,如果A2:Z2中有数据,函数将在A2:Z1范围内查找与objEachAnalysis.Analysis的精确匹配。假设它是在C1中发现的,那么rngOutput向下两个单元格。i、 e.返回C3

请阅读
范围
对象的文档。这如何帮助用户回答他的问题?