簡體   English   中英

Excel VBA-application.worksheetfunction.match錯誤

[英]Excel VBA - errors with application.worksheetfunction.match

我真的對此一無所知,所以感謝您抽出寶貴的時間來幫助您!

我懷疑我的問題源於錯誤的變量聲明,但是我無法解決它。

那么為什么該測試程序起作用:

Sub testmatch3()

    Dim arr()           As Variant
    Dim num             As Long
    Dim searchVal       As Variant
    Dim i               As Long

    ReDim arr(1 To 10)

    For i = 1 To 10
        arr(i) = i
    Next i

    searchVal = 4
    Debug.Print getMatch(searchVal, arr)

End Sub

Function getMatch(valueToMatch As Variant, matchArr As Variant) As Long

    getMatch = Application.WorksheetFunction.Match(valueToMatch, matchArr, 0)

End Function

但是以下內容給我一個不匹配錯誤(類型13):

Sub NewProcedure()

    Dim ENVarr              As Variant
    Dim StageRange          As Range
    Dim cell                As Range
    Dim LastRow             As Long
    Dim i                   As Long
    Dim ConnSheet           As Worksheet
    Dim tempstring          As Variant
    Dim arr()               As Variant

    Set ConnSheet = ThisWorkbook.Sheets("L1 forces")

    ' Find the last used row in the sheet and define the required ranges
    LastRow = ConnSheet.Range("A11").End(xlDown).row
    Set StageRange = ConnSheet.Range("H11:H" & LastRow)

    ' I have a big table of data in the "ENV sheet" which I transfer into a large 2D array
    ENVarr = ThisWorkbook.Worksheets("ENV").Range("A6").CurrentRegion

    ' From the ENVarray, make its second column into a new 1D array
    ' This new array has an upper bound dimension equal to the number of rows in ENVarr
    ReDim arr(LBound(ENVarr, 1) To UBound(ENVarr, 1))
    For i = LBound(arr) To UBound(arr)
        arr(i) = ENVarr(i, 2)
    Next i

    tempstring = "1140"
    Debug.Print getMatch(tempstring, arr)

End Sub

Function getMatch(valueToMatch As Variant, matchArr As Variant) As Long

    getMatch = Application.WorksheetFunction.Match(valueToMatch, matchArr, 0)

End Function

只是要注意arr中肯定存在值“ 1140”!

謝謝

我想您的工作表中的數字是1140,而您嘗試匹配字符串“ 1140”。 你有沒有嘗試寫

tempstring = 1140

沒有引號?

或者:確保您的Excel工作表中確實有一個字符串: ="1140"並且不僅將其格式化為字符串。 =TYPE(cell)的返回值(“ cell”包含您的1140)必須為2

暫無
暫無

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

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