Получение несоответствия типов при поиске строки в массиве - PullRequest
0 голосов
/ 04 июня 2019

У меня есть некоторый код, который извлекает строку из электронной таблицы и ищет значение индекса строки внутри массива. Я заметил, что если я сохраню свои строки до 1 символа, код работает нормально. Если я на самом деле пытаюсь запустить его, ища слова, я получаю ошибку несоответствия типов, даже если строка DEFINITELY существует внутри массива. Любая помощь будет оценена. Я вставил нижеприведенную версию кода, которая по-прежнему вызывает ту же ошибку.

Я попытался уменьшить свой массив как вариант или как строку. Я попытался использовать пробел, чтобы сделать все строки в массиве одинаковой длины.

Sub myArray_ISbroke()

    Dim arraysSuck: arraysSuck = Split("HI,HELLO,TEST1,TEST2,T3", ",")
    MsgBox Application.Match("HI", arraysSuck)
    MsgBox Application.Match("HELLO", arraysSuck)
    MsgBox Application.Match("TEST1", arraysSuck)
    MsgBox Application.Match("TEST2", arraysSuck)
    MsgBox Application.Match("T3", arraysSuck)

End Sub

Я ожидаю, что в окнах MSG появятся 1, 2, 3, 4 и 5. Я получаю ошибку 13 после «1».

1 Ответ

0 голосов
/ 04 июня 2019

Вам не хватает последнего параметра, типа соответствия. Смотри документы здесь .

Там написано:

Если match_type равен 1, Match находит наибольшее значение, которое меньше или равно lookup_value. Lookup_array должен быть расположен в порядке возрастания: ...- 2, -1, 0, 1, 2, ..., A-Z, FALSE, TRUE.

Если match_type равен 0, Match находит первое значение, которое точно равно lookup_value. Lookup_array может быть в любом порядке. Обратите внимание, что Match не учитывает регистр.

Если match_type равен -1, Match находит наименьшее значение, которое больше или равно lookup_value. Lookup_array должен быть расположен в порядке убывания: TRUE, FALSE, Z-A, ... 2, 1, 0, -1, -2, ... и т. Д.

Если match_type опущен, предполагается, что он равен 1.

Пересмотренный код:

Option Explicit

Sub UpdatedExample()

    Dim arraysSuck: arraysSuck = Split("HI,HELLO,TEST1,TEST2,T3", ",")
    MsgBox Application.Match("HI", arraysSuck, 0)
    MsgBox Application.Match("HELLO", arraysSuck, 0)
    MsgBox Application.Match("TEST1", arraysSuck, 0)
    MsgBox Application.Match("TEST2", arraysSuck, 0)
    MsgBox Application.Match("T3", arraysSuck, 0)

End Sub
...