VBA: Egendefinerte datatyper

Submitted by lroedal on Sun, 12/10/2017 - 23:41

Dersom dere har sett på Kais eksempelkode om parkeringsplasser, har dere nok lagt merke til at det ligger en liten kodesnutt i toppen. Det som skjer der, er at han definerer sin egen datatype, til videre bruk i koden. Dette kan være nyttig i mange tilfeller. Har du f.eks. behov for et to-dimensjonalt array, men ønsker å benytte forskjellige datatyper, er ikke dette mulig. Du vil dog i praksis oppnå dette, om du istedet benytter deg av et array av en egendefinert datatype.. Du definerer en egendefinert type slik som dette:

  1. Private Type byer
  2. navn as String
  3. innbyggertall as long
  4. land as string
  5. End type

Dette må defineres ganske høyt oppe i koden, rett under Option Compare Database (og evt. Option Explicit og andre options om dere har benyttet dere av det.). Når dette er gjort, kan dere deklarere en variabel av typen deres på vanlig måte. Vil dere ha en vanlig variabel, blir det slik:

Dim by as byer

Ønsker dere derimot å ha det som et array, vil det bli slik:

Dim by(1 to 10) as byer

Når dere i etterkant skal legge til data, gjøres dette på følgende måte (dersom vi tar utgangspunkt i en vanlig variabel, ikke array):

  1. by.navn = "Oslo"
  2. by.innbyggertall = 100000
  3. by.land = "Norge"

Hadde det være snakk om et array, vil det blitt nesten likt. Husk å legge parantesen etter variabelnavnet, slik som dette:

by(3).navn = "Molde"

Dersom dere i ettertid vil hente ut dataene igjen, kan dette gjøres ved å referere til variabelen slik dere har gjort tidligere:

Msgbox("Byen jeg bor i er " & by(3).navn)