簡體   English   中英

使用ThisWorkbook.Sheets(1)的Excel vba代碼.Range不工作,但Sheet1.Range工作正常。 為什么?

[英]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)它返回正確的值。 為什么不同?

是否有我可以參考的流程圖或任何可用的簡單信息,以了解哪些子命令(我不知道正確的單詞)與ThisWorkbookSheets(#)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.

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