2016-02-01 41 views
0
Sub FindTest() 
    Dim result As Integer 
    Dim target As Integer 

    target = Worksheets("Sheet1").Cells(8, "A") 

    result = Worksheets("Sheet1").Range("A10:A21").Find(What:=target,_ 
    LookIn:=xlValues, SearchOrder:=byRows).Row 

    ThisWorkbook.Worksheets("Sheet1").Cells("D7") = result 
End Sub 

使用.Find()的另一個項目產生錯誤。隔離使.Find()工作所需的代碼就是我上面例子的內容。VBA的.Find()引發「無法獲取Range類的Find屬性」

運行上面的代碼會導致下面的錯誤消息,在result = ...行的起始行處.Find()所在的行。

運行時錯誤「1004」: 無法獲取與錯誤沒有變化的查找範圍類

我已經更換了.Range(中)與.Cells()屬性信息。
使用.Find()複製/粘貼代碼以確定在StackExchange的其他問題中可用的工作表中最後使用的行不會導致錯誤。實施例下面:

Dim lastUsedRow as Integer 
lastUsedRow = Worksheets("Receiving Worksheet").Cells.Find(What:="*",_ 
SearchOrder:=xlRows, SearchDirection:=xlPrevious, LookIn:=xlValues).Row 
+0

結束時,我相信「目標」變量必須是細胞的實際值 - 而不是細胞本身。即:target = Worksheets(「Sheet1」)。Cells(8,「A」)。值 –

+2

@ Grade'Eh'Bacon'.Value'是'Cells()'的默認屬性。 –

+0

當target打破時,它的值是多少? –

回答

2
  1. SearchOrder:=byRows =>SearchOrder:=xlByRows
  2. 放置空間_之前在第一線
+0

空格和下劃線不在我的實際代碼中,它們僅在此論壇添加,以免使用滾動條。 xlbyRows更正並在第10行.Cells(「D7」)更改爲.Cells(7,「D」)。沒有錯誤被拋出,但結果不正確。我將.Range(「A10:A21」)更改爲.Range(「A9:A21」),因爲它看起來像搜索範圍忽略搜索範圍中的第一個單元格。感謝大家的幫助。 –

+0

是的,'Find()'忽略第一個單元格。有關[Microsoft文檔](https://msdn.microsoft.com/en-us/library/office/ff839746.aspx)中的更多信息,請參閱部分_Parameters_ - > _After_。您可以通過將範圍的最後一個單元格設置爲「After」後的值來解決此問題。 –