簡體   English   中英

Excel Vba細胞異常行為。對合並細胞的研究

[英]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

pullDataPckgsection是兩個字符串數組, 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所有參數(例如LookAtLookIn等)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM