Заметка
Доступ к этой странице требует авторизации. Вы можете попробовать войти в систему или изменить каталог.
Доступ к этой странице требует авторизации. Вы можете попробовать сменить директорию.
Аргумент , передаваемый ByRef (по ссылке), значение по умолчанию, должен иметь точный тип данных, ожидаемый в процедуре. Эта ошибка имеет следующие причину и решение:
Был передан аргумент с типом, не приведенный к ожидавшемуся типу.
Например, эта ошибка происходит при попытке передать переменную типа Integer, когда ожидался тип Long. Если требуется, чтобы произошло приведение, даже когда это связано с потерей информации, можно передать непосредственно сам аргумент, заключив его в скобки.
Например, чтобы передать аргумент типа Variant
MyVarпроцедуре, ожидающей аргумент типа Integer, соответствующий вызов можно записать следующим образом:Dim MyVar MyVar = 3.1415 Call SomeSub((MyVar)) Sub SomeSub (MyNum As Integer) MyNum = MyNum + MyNum End SubРазмещение непосредственно самого аргумента в скобках принудительным образом оценивает его как выражение. Во время этого оценивания дробная часть числа округляется (не посредством усечения), чтобы обеспечить соответствие ожидаемому типу аргумента. Результат оценивания помещается во временное расположение, а ссылка на это временное размещение получается процедурой. Таким образом исходный аргумент
MyVarсохраняет свое значение.Примечание.
Если не требуется задавать тип для переменной, данная переменная получает тип по умолчанию, Variant. Это очевидно не во всех случаях. Например, в приведенном ниже коде объявляются две переменные: первая,
MyVar, имеет тип Variant; вторая,AnotherVar, имеет тип Integer.Dim MyVar, AnotherVar As Integer
Для получения дополнительной информации выберите необходимый элемент и нажмите клавишу F1 (для Windows) или HELP (для Macintosh).
Поддержка и обратная связь
Есть вопросы или отзывы, касающиеся Office VBA или этой статьи? Руководство по другим способам получения поддержки и отправки отзывов см. в статье Поддержка Office VBA и обратная связь.