[英]Excel Vba Abnormal Behavior of Cells.Find on Merged Cells
已解決:錯誤是由於在別處操縱find屬性引起的
我對VBA的世界很新,我對我遇到的Range .Find
函數的一些異常行為有疑問。 我有一些代碼,我在子程序中調用如下。
For i = 2 To UBound(pullDataPckg)
For j = 1 To UBound(section)
Set cell = dataSheet.Cells.Find(What:=section(j))
'Below returns nothing on call 2, works for call 1
'Set cell = dataSheet.Cells.Find(What:="Value from section(j) in second call")
If Not cell Is Nothing Then
'Do some stuff
End If
Next
Next
pullDataPckg
和section
是兩個字符串數組, dataSheet
是一個工作表對象,代碼都位於Sub
,我調用它來從工作表中提取數據值。
我遇到的異常行為是,在我第二次調用sub時, Find
總是將單元格返回為Nothing
(搜索的單元格是我知道的所有合並單元格,如果我取消單元格,那么find方法是能夠找到細胞)。
但是,如果我改為使用dataSheet.Range("A1:R999").Find(What:=section(j))
則該方法成功找到該單元格。 因此,當與合並單元格一起使用時,問題似乎與Cells
屬性有關。
我在同一個工作表上調用了兩次sub,所以我添加了一個dataSheet.Cells.Find(What:="Known Value in section array of Second Sub Call")
調用,發現在第一個Sub調用中執行時代碼相同找到合並的單元格,而當在第二個Sub調用中執行時,它無法找到合並的單元格(如果單元格未合並,則它適用於兩個調用)。
我希望有人能夠解釋為什么只在第二個Sub調用中調用Cells
屬性並且僅在合並的單元格中調用find方法失敗。 由於測試值是硬編碼的,可以使用Range
屬性找到/取消合並單元格,並且我將相同的工作表傳遞給兩個調用我真的很難理解Find
方法只有在搜索合並時才會失敗第二次通話中的小區。
編輯:有5個合並的單元格,每個都有一個跨越A:R和高度為2的寬度。就在循環開始之前,調用一個子,通過打開一個工作簿填充pullDataPckg
數組,從工作簿中提取信息進入數組,然后關閉工作簿。 從新工作簿中獲取信息時,我調用Find()3次。
任何Find()
設置在調用之間都是持久的(就像通過UI使用find時一樣)。
如果你的其他用途的Find
變化比其他任何參數What
,你應該確保明確重置這些在任何后續調用。
一般來說,最好明確包含可能影響結果的Find
所有參數(例如LookAt
, LookIn
等)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.