我遇到application.match
函数的一些问题。类型不匹配。
application.match
返回的数据是什么类型?整数?
有什么方法可以更改下面的l
和k
的类型,以便允许我使用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
答案 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)