Visual Basic for Applications Reference
[Private | Public] Type varname
elementname [([subscripts])] As type
[elementname [([subscripts])] As type]
. . .
The Type statement syntax has these parts:
|Public||Optional. Used to declare user-defined types that are available to all procedures in all modules in all projects.|
|Private||Optional. Used to declare user-defined types that are available only within the module where the declaration is made.|
|varname||Required. Name of the user-defined type; follows standard variable naming conventions.|
|elementname||Required. Name of an element of the user-defined type. Element names also follow standard variable naming conventions, except that keywords can be used.|
|subscripts||When not explicitly stated in lower, the lower bound of an array is controlled by the Option Base statement. The lower bound is zero if no Option Base statement is present.|
|type||Required. Data type of the element; may be Byte, Boolean, Integer, Long, Currency, Single, Double, Decimal (not currently supported), Date, String (for variable-length strings), String * length (for fixed-length strings), Object, Variant, another user-defined type, or an object type.|
The Type statement can be used only at module level. Once you have declared a user-defined type using the Type statement, you can declare a variable of that type anywhere within the scope of the declaration. Use Dim, Private, Public, ReDim, or Static to declare a variable of a user-defined type.
Line numbers and line labels aren't allowed in Type...End Type blocks.
User-defined types are often used with data records, which frequently consist of a number of related elements of different data types.
The following example shows the use of fixed-size arrays in a user-defined type:
Type StateData CityCode (1 To 100) As Integer ' Declare a static array. County As String * 30 End Type Dim Washington(1 To 100) As StateData
In the preceding example,
StateData includes the
CityCode static array, and the record
Washington has the same structure as
When you declare a fixed-size array within a user-defined type, its dimensions must be declared with numeric literals or constants rather than variables.