A Type utasítással struktúrákat hozhatunk létre, de ezt csak kód modul deklarációs részében tehetjük. (Az így létrehozott típusok mindig globálisak).
Az új típus tartalmazhat tömböket (dinamikus nem lehet) és saját típusokat is. Saját típus szerepelhet eljárás paramétereként és privát függvény visszatérési értékeként is.
Objektum publikus függvényeinek, eljárásainak paramétereként, illetve visszaadott értékeként saját típus nem használható. Amennyiben a rekord átadása elkerülhetetlen, a rekordot osztályként kell megvalósítani (az osztály definíciója a rekord típus változóinak megfelelő publikus változókból álljon) amelyet már tetszőleges függvény / eljárás használhat paraméterként vagy visszatérési értékként.
A Visual Basicben kétféle érvényességi kör van: eljárásszintű és modulszintű.
Alporgramszintű: A változó annak az alprogramnak a sajátja amelyben deklarálva van, kívülről nem érhetjük el. A deklarációs kulcsszó lehet Dim vagy Static. Az előbbi esetén az alprogram lefutása után a változó megszűnik, az utóbbi esetben pedig nem, azaz a memóriában marad, és az alprogram újbóli hívásánál megmarad az értéke. (Ha az alprogram minden változóját statikussá akarjuk tenni, akkor írjuk az alprogram neve elé a Static kulcsszót).
Modulszintű: Itt deklarálhatunk private és protected változókat is. Private esetben a változó csak az őt tartalmazó modulból érhető el, public esetben pedig bárhonnan.
A felhasználó által definiált típusokat nem a Type kulcsszóval, hanem a Structure kulcsszóval kell definiálni.
A struktúrák nem hivatkozási típusok, hanem értéktípusok.
Egy struktúra adattagjának nem adhatunk értéket a deklarálásakor.
Az adattagot a struktúra egy paraméterezett konstruktorával inicializálhatjuk, vagy a struktúra egy példányának létrehozása után adhatunk értéket a tagnak.
Struktúraváltozót hozzárendelhetünk egy ugyanolyan típusú másik változóhoz, és az összes tag is másolva lesz.
Struktúrák összehasonlításakor azonban egyenként kell a tagokat összehasonlítani.