|
||||||||||||||||||||||||||||||||||||||
Разбор ошибки Type Mismatch Error
Время создания: 12.10.2019 20:23
Раздел: Разные закладки - VBA - Меню VB-справка
Запись: xintrea/mytetra_db_adgaver_new/master/base/1570882515y9yrcdqpxz/text.html на raw.githubusercontent.com
|
||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||
Разбор ошибки Type Mismatch Error
Объяснение Type Mismatch Error Type Mismatch Error VBA возникает при попытке назначить значение между двумя различными типами переменных. Ошибка отображается как: Например, если вы пытаетесь поместить текст в целочисленную переменную Long или пытаетесь поместить число в переменную Date. Давайте посмотрим на конкретный пример. Представьте, что у нас есть переменная с именем Total, которая является длинным целым числом Long. Если мы попытаемся поместить текст в переменную, мы получим Type Mismatch Error VBA (т.е. VBA Error 13).
Давайте посмотрим на другой пример. На этот раз у нас есть переменная ReportDate типа Date. Если мы попытаемся поместить в эту переменную не дату, мы получим Type Mismatch Error VBA.
В целом, VBA часто прощает, когда вы назначаете неправильный тип значения переменной, например:
Тем не менее, есть некоторые преобразования, которые VBA не может сделать:
Простой способ объяснить Type Mismatch Error VBA состоит в том, что элементы по обе стороны от равных оценивают другой тип. При возникновении Type Mismatch Error это часто не так просто, как в этих примерах. В этих более сложных случаях мы можем использовать средства отладки, чтобы помочь нам устранить ошибку. В VBA есть несколько очень мощных инструментов для поиска ошибок. Инструменты отладки позволяют приостановить выполнение кода и проверить значения в текущих переменных. Вы можете использовать следующие шаги, чтобы помочь вам устранить любую Type Mismatch Error VBA.
Следующее видео показывает, как это сделать. На скриншоте ниже вы можете увидеть типы в окне просмотра. Используя окно просмотра, вы можете проверить различные части строки кода с ошибкой. Затем вы можете легко увидеть, что это за типы переменных. В следующих разделах показаны различные способы возникновения Type Mismatch Error VBA. Как мы уже видели, попытка поместить текст в числовую переменную может привести к Type Mismatch Error VBA. Ниже приведены некоторые примеры, которые могут вызвать ошибку:
VBA очень гибок в назначении даты переменной даты. Если вы поставите месяц в неправильном порядке или пропустите день, VBA все равно сделает все возможное, чтобы удовлетворить вас. В следующих примерах кода показаны все допустимые способы назначения даты, за которыми следуют случаи, которые могут привести к Type Mismatch Error VBA.
Тонкая причина Type Mismatch Error VBA — это когда вы читаете из ячейки с ошибкой, например: Если вы попытаетесь прочитать из этой ячейки, вы получите Type Mismatch Error.
Чтобы устранить эту ошибку, вы можете проверить ячейку с помощью IsError следующим образом.
Однако проверка всех ячеек на наличие ошибок невозможна и сделает ваш код громоздким. Лучший способ — сначала проверить лист на наличие ошибок, а если ошибки найдены, сообщить об этом пользователю. Вы можете использовать следующую функцию, чтобы сделать это:
Ниже приведен пример использования этого кода.
Как мы видели, размещение неверного типа значения в переменной вызывает Type Mismatch Error VBA. Очень распространенная причина — это когда значение в ячейке имеет неправильный тип. Пользователь может поместить текст, такой как «Нет», в числовое поле, не осознавая, что это приведет к Type Mismatch Error в коде. Если мы прочитаем эти данные в числовую переменную, то получим
Вы можете использовать следующую функцию, чтобы проверить наличие нечисловых ячеек, прежде чем использовать данные.
Вы можете использовать это так:
Если вы используете имя модуля в своем коде, это может привести к Например, допустим, у вас есть модуль с именем «Module1». Выполнение следующего кода приведет к о
До сих пор мы рассматривали в основном переменные. Мы обычно называем переменные основными типами данных. Они используются для хранения одного значения в памяти. В VBA у нас также есть объекты, которые являются более сложными. Примерами являются объекты Workbook, Worksheet, Range и Chart. Если мы назначаем один из этих типов, мы должны убедиться, что назначаемый элемент является объектом того же типа. Например:
В VBA объект рабочей книги имеет две коллекции — Sheets и Worksheets. Есть очень тонкая разница.
Лист диаграммы создается, когда вы перемещаете диаграмму на собственный лист, щелкая правой кнопкой мыши на диаграмме и выбирая «Переместить». Если вы читаете коллекцию Sheets с помощью переменной Worksheet, она будет работать нормально, если у вас нет рабочей таблицы. Если у вас есть лист диаграммы, вы получите В следующем коде Type Mismatch Error появится в строке «Next sh», если рабочая книга содержит лист с диаграммой.
Вы можете назначить диапазон массиву и наоборот. На самом деле это очень быстрый способ чтения данных.
Проблема возникает, если ваш диапазон имеет только одну ячейку. В этом случае VBA не преобразует arr в массив. Если вы попытаетесь использовать его как массив, вы получите
В этом сценарии вы можете использовать функцию IsArray, чтобы проверить, является ли arr массивом.
На этом мы завершаем статью об Type Mismatch Error VBA. Если у вас есть ошибка несоответствия, которая не раскрыта, пожалуйста, дайте мне знать в комментариях. Источник |
||||||||||||||||||||||||||||||||||||||
Так же в этом разделе:
|
||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||
|