簡體   English   中英

為什么在使用 Find 方法 vba 時會出現錯誤運行時“91”

[英]why do I get an error runtime '91' when using Find method vba

每次嘗試在某個范圍內使用 find 方法時,都會收到運行時錯誤“91”。 我有一個日期數組(“A1:A5”),我通過使用 max 方法從中獲得最高的日期,但隨后我想獲得另一個值,即 B 列(“B1:B5”)和同一行我以前找到的最高日期。

Dim wkbFrom As Workbook
Dim wsmb As Sheets
Dim MBSheet2 As Worksheet
Dim rowTMO as long
Dim carica_range As Range
Dim TMOcarica_range As Range

'Define The MB worksheet
Set wkbFrom = Workbooks.Open(MBPath)
Set wsmb = wkbFrom.Worksheets
Set MBSheet2 = wsmb(CStr("Foglio1"))

For m = 2 To row_counter
Set TMOcarica_range = DataSheet.Cells(m, DataSheet.Range("TMO_carica").Column)
Set carica_range = DataSheet.Cells(m, DataSheet.Range("data_carico_magazzino").Column)

'here I put some other code that fills the respective values in the MBSheet2.("A1:B5") arrange

'Find the max value in the ("A1:A5") array and give the values date format
carica_range.value = WorksheetFunction.Max(MBSheet2.Range("A1:A5"))
carica_range.NumberFormat = "dd/mm/yyyy"
MBSheet2.Range("A1:A5").NumberFormat = "dd/mm/yyyy"
rowTMO = MBSheet2.Columns(1).Find(carica_range, LookIn:=xlValues).Row
TMOcarica_range.Value = MBSheet2.Cells(rowTMO, "B").Value

Next m

Range.Find 返回一個范圍對象; 如果搜索失敗,則不返回任何內容。 你對它的使用是不正確的; 您應該將 Find 返回的值分配給范圍類型的變量,檢查該變量是否不包含 Nothing,然后才對其執行操作。

Dim wkbFrom As Workbook
Dim wsmb As Sheets
Dim MBSheet2 As Worksheet
Dim rowTMO As Long
Dim load_range As Range
Dim TMOload_range As Range
Dim Fnd As Range

    load_range.Value = WorksheetFunction.Max (MBSheet2.Range ("A1: A5"))
    load_range.NumberFormat = "dd / mm / yyyy"
    MBSheet2.Range ("A1: A5"). NumberFormat = "dd / mm / yyyy"
    Set Fnd = MBSheet2.Columns (1) .Find (load_range, LookIn: = xlValues)
    If Not Fnd Is Nothing Then
        rowTMO = Fnd.Row
        TMOload_range.Value = MBSheet2.Cells (rowTMO, "B"). Value
    Else
        MsgBox "Not found"
    End If
    

PS: Range.Find 不適用於日期。

暫無
暫無

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

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