2016-03-26 78 views
2

我有這樣的代碼:VBA不能正確處理範圍內查找方法返回

Private Sub UserForm_Initialize() 

Dim Text_Cell As Range 
Dim temp As Control 

Set Text_Cell = Sheet1.Cells.Find("Text") 

Do Until Text_Cell.Offset(1, 0).Value = "" 
    Set temp = UserForm1.MultiPage(1).Controls.Add("Forms.Commandbutton.1", "h") 

    Set Text_Cell = text_Cell.Offset(1, 0) 
Loop 

編輯:只是一個快速的澄清 - 使用MsgBoxes,斷點,科學,魔術等我發現的事業「所需對象「錯誤發生在VBA進入循環之前。

我想在表單中找到一個單元格,它的值是「text」,然後是每個單元格的值低於它 - 在我的用戶窗體上創建一個控件。我遇到的問題是Find方法找到正確的單元格,返回並分配它,但由於某些原因,VBA無法處理「text_Cell」變量,即使設置了斷點並查看了「text_Cell」的局部變量後我看到它被分配到適當的單元格。我不斷收到「Object Required」錯誤。單獨獲取單元格不會返回任何內容,因此嘗試引用Offst(1,0)會引發「Object required」錯誤。

+0

您正在查找* text *,然後循環遍歷下面的所有空白單元格。你確定你不想要它下面的所有非空白單元格嗎? – Jeeped

+0

@Jeeped,是的,謝謝你,我的錯誤。我會解決這個問題,但最初的問題在於循環之外 – mathgenius

+0

我無法用您的示例重現您的問題。你測試過了嗎? –

回答

1

我試圖找到在具有的「文本」的值薄片上的細胞然後與它下面值每個單元 - 創建我的用戶窗體控件。

使用以下循環通過所有非空白細胞的細胞與下面的文字

Set Text_Cell = Sheet1.Cells.Find(What:="text", MatchCase:=False, _ 
           LookAt:=xlWhole, LookIn:=xlFormulas) 

Do Until Text_Cell.Value = "" 
    Set temp = UserForm1.MultiPage(1).Controls.Add("Forms.Commandbutton.1", "h") 

    Set text_Cell = text_Cell.Offset(1, 0) 
Loop 
+0

謝謝你注意到這一點。如果您發現我的主要問題,我也會很感激。 – mathgenius

+0

[Range.Find方法](https://msdn.microsoft.com/en-us/library/office/ff839746.aspx)對於沒有明確設置「以前使用過的記憶」的參數具有「記憶」 (甚至從工作表中)。我已經調整了上述內容以涵蓋一些更重要的選項。 – Jeeped

+0

不是這樣。首先,正如我所說的,該方法工作正常,變量「text_cell」甚至存儲單元格,但我得到「對象需要」的錯誤。其次,除非整個excel關閉後纔會記住這些設置,否則它們根本就不是問題。 – mathgenius