Visual Basic for Applications Reference
Type Statement
Used at module level to define a user-defined data type containing one or more elements.
Syntax
[Private | Public] Typevarname
elementname [([subscripts])] Astype
[elementname [([subscripts])] Astype]
. . .
End Type
The Type statement syntax has these parts:
Part | Description |
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 OptionBase statement. The lower bound is zero if no OptionBase 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. |
Remarks
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.
In standard modules and class modules, user-defined types are public by default. This visibility can be changed using the Private keyword.
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 StateData
.
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.