![](/img/trans.png)
[英]newRange As Range is not recognized in ThisWorkbook.Sheets(1).Range(newRange).Value
[英]Excel vba code using ThisWorkbook.Sheets(1).Range not working, but Sheet1.Range works fine. Why?
當我使用wb.Sheets(1).Range("A:A").Find(What:=ID, LookIn:=xlValues)
我得到錯誤91 - 對象變量或沒有設置塊。 當我使用Sheet1.Range("A:A").Find(What:=ID, LookIn:=xlValues)
它返回正確的值。 為什么不同?
是否有我可以參考的流程圖或任何可用的簡單信息,以了解哪些子命令(我不知道正確的單詞)與ThisWorkbook
和Sheets(#)
與Sheet#.Whatever
什么?
我對使用Sheet("Name")
猶豫不決,因為名稱可能會在以后更改。 我使用ThisWorkbook
而不是ActiveWorkbook
來保持所有代碼都附加到相應的工作簿。
您可以提供的任何簡單參考信息都很棒。 我已經研究過,但仍然不明白哪些子命令適用於哪些父命令。 (同樣,可能是錯誤的術語)。
Private Sub lstExample_DblClick(ByVal Cancel As MSForms.ReturnBoolean)
Dim wb As Workbook
Dim I As Integer
Dim ID As String
Dim findValue As Range
Set wb = ThisWorkbook
'Get the values of the selected row in listbox on doubleclick
For I = 0 To lstExample.ListCount - 1
If lstExample.Selected(I) = True Then
'Set listbox column 1 as ID value to find
ID = lstExample.List(I, 1)
End If
Next I
'Match ID (column A) on Sheet1
Set findValue = wb.Sheets(1).Range("A:A").Find(What:=ID, LookIn:=xlValues)
MsgBox findValue
End Sub
只要兩者都是相同的對象(在您的情況下為Worksheet對象),Sheets(1)和Sheet1的屬性之間沒有區別。
你得到那個錯誤,因為findValue Is Nothing
。 也就是說,它無法在列中找到ID。 使用Find方法時,最好指定每個參數。 查找記住您上次查找的內容,即使您在UI中執行此操作並使用VBA中的查找也是如此。
例如,如果在執行查找時在UI中檢查MatchCase。 然后在VBA中執行查找並且不指定MatchCase屬性,它將使用您上次設置的任何內容。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.