Операторы DeftypeDeftype statements

Используется на уровне модуля , чтобы задать тип данных по умолчанию для переменных, аргументов , передаваемых в процедуры, и типа возвращаемого значения для процедур Function и Property Get , имена которых начинаются с указанных символов.Used at the module level to set the default data type for variables, arguments passed to procedures, and the return type for Function and Property Get procedures whose names start with the specified characters.

СинтаксисSyntax

Дефбул леттерранже, [ леттерранже ] ...DefBool letterrange, [ letterrange ] . . .
Дефбите леттерранже, [ леттерранже ] ...DefByte letterrange, [ letterrange ] . . .
Дефинт леттерранже, [ леттерранже ] ...DefInt letterrange, [ letterrange ] . . .
Дефлнг леттерранже, [ леттерранже ] ...DefLng letterrange, [ letterrange ] . . .
Дефлнглнг леттерранже, [ леттерранже ] ...DefLngLng letterrange, [ letterrange ] . . . (допускается только для 64-разрядных платформ).(valid on 64-bit platforms only)

*Дефлнгптр* леттерранже, [ леттерранже ]\ *...**

*DefLngPtr
letterrange, [ letterrange ]\ **. . .**
Дефкур леттерранже, [ леттерранже ] ...DefCur letterrange, [ letterrange ] . . .
Дефснг леттерранже, [ леттерранже ] ...DefSng letterrange, [ letterrange ] . . .
Дефдбл леттерранже, [ леттерранже ] ...DefDbl letterrange, [ letterrange ] . . .
Дефдек леттерранже, [ леттерранже ] ...DefDec letterrange, [ letterrange ] . . .
Дефдате леттерранже, [ леттерранже ] ...DefDate letterrange, [ letterrange ] . . .
Дефстр леттерранже, [ леттерранже ] ...DefStr letterrange, [ letterrange ] . . .
Дефобж леттерранже, [ леттерранже ] ...DefObj letterrange, [ letterrange ] . . .
Дефвар леттерранже, [ леттерранже ] ...DefVar letterrange, [ letterrange ] . . .

Обязательный аргумент леттерранже имеет следующий синтаксис: letter1 [ - letter2 ]The required letterrange argument has the following syntax: letter1 [ - letter2 ]

Аргументы letter1 и letter2 указывают диапазон имен, для которого вы можете задать тип данных по умолчанию.The letter1 and letter2 arguments specify the name range for which you can set a default data type. Каждый аргумент представляет первую букву переменной, аргумента, процедуры Function или свойства Get , а также может быть любой буквой алфавита.Each argument represents the first letter of the variable, argument, Function procedure, or Property Get procedure name, and can be any letter of the alphabet. Регистр букв в letterrange не имеет значения.The case of letters in letterrange isn't significant.

ПримечанияRemarks

Имя оператора определяет тип данных.The statement name determines the data type.


StatementStatement Тип данныхData type
дефбулDefBool BooleanBoolean
дефбитеDefByte ByteByte
дефинтDefInt Целое числоInteger
дефлнгDefLng LongLong
DefLngLngDefLngLng LongLong (допускается только для 64-разрядных платформ)LongLong (valid on 64-bit platforms only)
DefLngPtrDefLngPtr LongPtrLongPtr
дефкурDefCur CurrencyCurrency
дефснгDefSng Одинарное с плавающей точкойSingle
дефдблDefDbl DoubleDouble
дефдекDefDec Decimal (в настоящее время не поддерживается)Decimal (not currently supported)
дефдатеDefDate DateDate
дефстрDefStr StringString
дефобжDefObj ObjectObject
дефварDefVar VariantVariant

Например, в следующем фрагменте программы Message — это строковая переменная.For example, in the following program fragment, Message is a string variable.

DefStr A-Q
. . .
Message = "Out of stack space."

Оператор Deftype влияет только на тот модуль, в котором он используется.A Deftype statement affects only the module where it is used. Например, оператор DefInt в одном модуле затрагивает только тип данных по умолчанию тех переменных, переданных в процедуры аргументов и типа возвращаемого значения для процедур Function и Property Get, которые объявлены в этом модуле; при этом тип данных по умолчанию для переменных, аргументов и типов возвращаемых событий в других модулях не затрагивается.For example, a DefInt statement in one module affects only the default data type of variables, arguments passed to procedures, and the return type for Function and Property Get procedures declared in that module; the default data type of variables, arguments, and return types in other modules is unaffected. При отсутствии явного объявления с помощью оператора Deftype тип данных по умолчанию для всех переменных, всех аргументов, всех процедур Function и Property Get имеет значение Variant.If not explicitly declared with a Deftype statement, the default data type for all variables, all arguments, all Function procedures, and all Property Get procedures is Variant.

При указании диапазона букв обычно он определяет тип данных для переменных, начинающихся с букв, в первых 128 символах набора символов.When you specify a letter range, it usually defines the data type for variables that begin with letters in the first 128 characters of the character set. Однако если указать диапазон букв A–Z, то по умолчанию задается указанный тип данных для всех переменных, включая переменные, начинающиеся с международных символов из расширенной части набора символов (128–255).However, when you specify the letter range A–Z, you set the default to the specified data type for all variables, including variables that begin with international characters from the extended part of the character set (128–255).

После указания диапазона A – Z невозможно повторно определить поддиапазоны переменных с помощью операторов DEFType .After the range A-Z has been specified, you can't further redefine any subranges of variables by using Deftype statements. После указания диапазона, если вы включили ранее определенную букву в другой оператор Defтипа DEF, возникает ошибка.After a range has been specified, if you include a previously defined letter in another Deftype statement, an error occurs. Однако можно явно указать тип данных любой переменной, определенной или нет, с помощью оператора Dim с предложением as Type .However, you can explicitly specify the data type of any variable, defined or not, by using a Dim statement with an As type clause.

Например, можно использовать следующий код на уровне модуля, чтобы определить переменную в виде Double , несмотря на то, что тип данных по умолчанию — Integer.For example, you can use the following code at the module level to define a variable as a Double even though the default data type is Integer.

DefInt A-Z
Dim TaxRate As Double

Операторы Deftype не затрагивают элементы пользовательских типов, так как эти элементы должны объявляться явно.Deftype statements don't affect elements of user-defined types because the elements must be explicitly declared.

См. такжеSee also

Поддержка и обратная связьSupport and feedback

Есть вопросы или отзывы, касающиеся Office VBA или этой статьи?Have questions or feedback about Office VBA or this documentation? Руководство по другим способам получения поддержки и отправки отзывов см. в статье Поддержка Office VBA и обратная связь.Please see Office VBA support and feedback for guidance about the ways you can receive support and provide feedback.