User-Defined Type (UDT)

User defined type in Visual Basic 6 is a compound data structure. It holds several variables of different data types. After defining a UDT, you can assign values to the member variables of the UDT.

Defining the user defined type

Before using the UDT in your code, you must first define it using the Type directive in the Declarations section of a module, for example, a form module. The following block of code is called the Type structure.


Private Type BookDetails       'in Declarations section
    title As String
    author As String
    pages As Long
End Type

Defintion of UDT

After defining the UDT variable, declare variables of that type.

Assigning values

Private Sub cmdSetValue_Click()
    Dim book1 As BookDetails   'Declaring book1 as the type


    'Assigning values = "Balagurusamy"
    book1.title = "C Programming"
    book1.pages = 600
End Sub

The "With...End with" structure

Use "With...End with" structure for the better readability of your code. It eases up the structure.


Dim book1 As BookDetails

With book1
    .author = "Balagurusamy"
    .title = "C Programming"
    .pages = 600
End With

With book1
    Print .author, .pages, .title
End With

Sub structure of a user defined type

The Type structure can also have sub structures. In this case, you have to access the nested structure using the nested "With...End With" structure.


'Sub structure of UDT
Private Type AddressDetails
    city As String
    state As String
    pin As Long
    ph_no As String
End Type

Private Type StudentDetails
    name As String
    stream As String
    DepartmentId As String
    address As AddressDetails
End Type
Private Sub cmdSetDetails_Click()
    Dim student1 As StudentDetails

    'Nested With...End With structure
    With student1
        .name = "XYZ"
        .stream = "Computer Science"
        .DepartmentId = "C900"
        MsgBox .name & vbTab & .stream & vbTab & .DepartmentId
        With .address
            .city = "London"
            .state = "abc gdf"
            .pin = 77764
            .ph_no = "998765432"
            MsgBox .city & vbTab & .ph_no & vbTab & .pin & vbTab _

             & .state
        End With
    End With

End Sub

Sample program: Student Details