Table of contents
Collapse the table of content
Expand the table of content

Type Statement

office 365 dev account|Last Updated: 7/28/2017
2 Contributors

Used at module level to define a user-defineddata type containing one or more elements.


[ Private | Public ] Typevarname
elementname [ ( [ subscripts ] ) ] Astype
[ elementname [ ( [ subscripts ] ) ] Astype ]
. . .

End Type
The Type statement syntax has these parts:

PublicOptional. Used to declare user-defined types that are available to allprocedures in allmodules in allprojects.
PrivateOptional. Used to declare user-defined types that are available only within the module where the declaration is made.
varnameRequired. Name of the user-defined type; follows standard variable naming conventions.
elementnameRequired. Name of an element of the user-defined type. Element names also follow standard variable naming conventions, except that keywords can be used.
subscriptsWhen 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.
typeRequired. 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 thescope of the declaration. Use Dim, Private, Public, ReDim, or Static to declare a variable of a user-defined type. In standard modules andclass modules, user-defined types are public by default. This visibility can be changed using the Private keyword. Line numbers andline 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.


This example uses the Type statement to define a user-defined data type. The Type statement is used at the module level only. If it appears in a class module, a Type statement must be preceded by the keyword Private.

Type EmployeeRecord    ' Create user-defined type. 
    ID As Integer    ' Define elements of data type. 
    Name As String * 20 
    Address As String * 30 
    Phone As Long 
    HireDate As Date 
End Type 
Sub CreateRecord() 
    Dim MyRecord As EmployeeRecord    ' Declare variable. 

    ' Assignment to EmployeeRecord variable must occur in a procedure. 
    MyRecord.ID = 12003    ' Assign a value to an element. 
End Sub
© 2017 Microsoft