2016-11-28 67 views
-1

我真的不明白這個VBA代碼,這個語句中「find」的含義是什麼,任何人都可以幫助我理解?需要VBA代碼的說明

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

請閱讀範圍對象的['Find'方法](https://msdn.microsoft.com/en-us/library/office/ff839746.aspx)的文檔。 – YowE3K

回答

0

在寫代碼前寫上debug.print objEachAnalysis.Analysis

該代碼將設置rngOutput兩行低於找到的值,打印在控制檯(即時窗口)上。

代碼寫入debug.print rngOutput.address後在同一個立即窗口中看到地址。

要查看立即窗口,請在Excel中的Visual Basic編輯器中按ctrl+G

0

表達可能看起來乍一看很複雜,你可以把它分解使事情變得更加簡單,這裏是帶註釋的例子:

' 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上找到此方法的幫助主題。

+0

這是如何幫助用戶回答他的問題的? –

0

rngOutput低於其中「objEachAnalysis.Analysis」的值在範圍A2被發現的最後一個單元在正確的在工作表中的「p_objReportActual.Reportname」和1行以上

連續範圍2行的單元

因此,如果在A2:Z2中有數據,則該函數會在範圍A2:Z1中查找與objEachAnalysis.Analysis完全匹配的數據。假設它在C1中找到,那麼rngOutput就是兩個單元格。即它返回C3