次の方法で共有


Deftype ステートメント

モジュール レベルで使用して、変数の既定のデータ型プロシージャに渡される引数、および指定した文字で始まる名前を持つ Function プロシージャと Property Get プロシージャの戻り値の型を設定します。

構文

DefBoolletterrange, [ letterrange ] . .DefByteletterrange, [ letterrange ] . .DefIntletterrange, [ letterrange ] . .DefLngletterrange, [ letterrange ] . .DefLngLngletterrange, [ letterrange ] . . . (64 ビット プラットフォームでのみ有効) DefLngPtrletterrange, [ letterrange ] . .DefCurletterrange, [ letterrange ] . .DefSngletterrange, [ letterrange ] . .DefDblletterrange, [ letterrange ] . .DefDecletterrange, [ letterrange ] . .DefDateletterrange, [ letterrange ] . .DefStrletterrange, [ letterrange ] . .DefObjletterrange, [ letterrange ] . .DefVarletterrange, [ letterrange ] . .

必須の letterrange 引数の構文は 、letter1 [ -letter2 ] です。

引数 letter1 および letter2 では、既定のデータ型を設定できる名前の範囲を指定します。 各引数は、変数、引数、 Function プロシージャ、または Property Get プロシージャ名の最初の文字を表し、アルファベットの任意の文字を指定できます。 letterrange では大文字と小文字は区別されません。

解説

ステートメント名によってデータ型が決まります。

Statement データ型
DefBool Boolean
DefByte Byte
DefInt Integer
DefLng Long
DefLngLng LongLong (64 ビット プラットフォームでのみ有効)
DefLngPtr LongPtr
DefCur Currency
DefSng Single
DefDbl Double
DefDec Decimal (現在は非サポート)
DefDate Date
DefStr String
DefObj Object
DefVar バリアント型

たとえば、次のプログラム フラグメントでは、 Message は文字列変数です。

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

Defステートメントは、使用されるモジュールにのみ影響します。 たとえば、1 つのモジュールの DefInt ステートメントは、変数の既定のデータ型、プロシージャに渡される引数、そのモジュールで宣言された Function プロシージャと Property Get プロシージャの戻り値の型にのみ影響します。他のモジュールの変数、引数、戻り値の型の既定のデータ型は影響を受けません。 Defステートメントで明示的に宣言されていない場合、すべての変数、すべての引数、すべての関数プロシージャ、およびすべての Property Get プロシージャの既定のデータ型は Variant です

文字範囲を指定すると、通常、 文字セットの最初の 128 文字の文字で始まる変数のデータ型が定義されます。 ただし、文字範囲 A から Z を指定する場合は、文字 セットの拡張部分 (128 から 255) の国際文字で始まる変数を含め、すべての変数の指定されたデータ型に既定値を設定します。

範囲 A から Z を指定した後は、 Def ステートメントを使用して変数のサブ範囲をさらに再定義することはできません。 範囲を指定した後、別の Def ステートメントに以前に定義した文字を含める場合、エラーが発生します。 ただし、定義されていない変数のデータ型を明示的に指定するには、 Dim ステートメントと As 句を使用します。

たとえば、モジュール レベルで次のコードを使用して、既定のデータ型が Integer であっても、変数を Double として定義できます。

DefInt A-Z
Dim TaxRate As Double

ユーザー定義型の場合は要素を明示的に宣言する必要があるので、Deftype ステートメントはユーザー定義型の要素には適用されません。

関連項目

サポートとフィードバック

Office VBA またはこの説明書に関するご質問やフィードバックがありますか? サポートの受け方およびフィードバックをお寄せいただく方法のガイダンスについては、Office VBA のサポートおよびフィードバックを参照してください。