Что возвращает application.match? целое число? - PullRequest
0 голосов
/ 23 января 2019

У меня проблемы с функцией 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

1 Ответ

0 голосов
/ 23 января 2019

Введите 1 в ячейку, выберите ее, затем введите в окне «Немедленно»:

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

выходы "Double"

Вы должны использовать 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)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...