application.match返回什么?整数?

时间:2019-01-23 07:03:59

标签: excel vba

我遇到application.match函数的一些问题。类型不匹配。 application.match返回的数据是什么类型?整数?

有什么方法可以更改下面的lk的类型,以便允许我使用cells(l,k)与它们一起工作?

Sub otcheck()
    Dim i As Integer
    Dim j As Integer

    For i = 384 To 395
        j = check(i)

        Range("O9") = mthdate(j)
        Range("O10") = mthdate(j - 1)

        If Range("O10") = #12:00:00 AM# Then
            l = 9    
        Else
            l = Application.Match(Range("O10"), Range("B9:B500"), 0)
        End If

        k = Application.Match(Range("O9"), Range("B9:B500"), 0)

        Cells(i, 4) = Application.Sum(Range(Cells(l, 14), Cells(k, 14)))
        'this above line is having the type mismatch issue
        'guessing is due to the l and k variables
    Next i

    Range("o9:P10") = ""

End Sub

1 个答案:

答案 0 :(得分:1)

在一个单元格中输入1,选择它,然后在立即窗口中输入:

? typename(application.match(1,selection,0))

输出“双”

不过,您应该使用Variant,以便在找不到匹配项的情况下测试错误的返回值:

Dim l As Variant
l = Application.Match(Range("O10"), Range("B9:B500"), 0)
If IsError(l) Then
    'no match!
Else
    'use l
End If

不要忘记(例如)l / k值1对应于Row9,而不是Row1(因为您的查找范围是B9:B500)