Application.Match дает несоответствие типов

Я пытаюсь использовать Application.Match но он возвращает type mismatch error:13 ошибка type mismatch error:13 . Зачем?

 Dim mySrs as Series Dim ws as Worksheet set ws Activesheet For Each mySrs in ActiveChart.SeriesCollection tempvar = mySrs.Name y = Application.Match(tempvar, ws.Range("P37:P71"), 0) MsgBox y 

По всей вероятности, совпадения не найдено. В этом случае Application.Match возвращает код ошибки Excel, то есть вариант / ошибка, значение которого равно Error 2042 (это соответствует получению #N/A в Excel).

Такое значение ошибки не может быть принудительно принудительно привязано к String (что и ожидает MsgBox ), и, таким образом, вы получаете несоответствие типа.

Обратите внимание, что эту функцию Match можно вызвать с помощью WorksheetFunction.Match . Единственное различие заключается в том, как обрабатывать ошибки:

  • С WorksheetFunction ошибки обрабатываются как ошибки VBA, которые можно использовать с помощью синтаксиса On Error .

  • С помощью Application они возвращают код ошибки Excel, завернутый в вариант. Вы можете использовать IsError чтобы увидеть, является ли возвращаемая переменная вариантом типа ошибки.

  • Outlook VBA - запуск кода каждые полчаса
  • Excel - объединить несколько столбцов в один столбец
  • VBA-подзаголовок вне допустимого диапазона - ошибка 9
  • Большая функция Excel с дубликатами
  • Сравните двойную точность в задаче точности VBA
  • как объединить повторяющиеся строки и суммировать значения 3 столбца в excel
  • VBA Macro для сравнения всех ячеек двух файлов Excel
  • Как сравнить две фигуры?
  • Что делает ключевое слово Set в VBA?
  • Плохой выбор данных с использованием VBScript, значений полей даты
  • Использование Excel VBA для запуска SQL-запроса
  • Давайте будем гением компьютера.