Jeg skrev følgende kode:
Function find_results_idle()
Public iRaw As Integer
Public iColumn As Integer
iRaw = 1
iColumn = 1
Og jeg får feilmeldingen:
"ugyldig attributt i Sub eller Function"
Vet du hva jeg har gjort feil?
Jeg prøvde å bruke Global
i stedet for Public
, men fikk samme problem.
Jeg prøvde å erklære selve funksjonen som Public
, men det hjalp heller ikke.
Hva må jeg gjøre for å opprette den globale variabelen?
Dette er et spørsmål om scope.
Hvis du bare vil at variablene skal vare i funksjonens levetid, bruker du Dim
(forkortelse for Dimensjon) inne i funksjonen eller sub for å erklære variablene:
Function AddSomeNumbers() As Integer
Dim intA As Integer
Dim intB As Integer
intA = 2
intB = 3
AddSomeNumbers = intA + intB
End Function
'intA and intB are no longer available since the function ended
En global variabel (som SLaks påpekte) erklæres utenfor funksjonen ved hjelp av nøkkelordet Public
. Denne variabelen vil være tilgjengelig i løpet av programmets levetid. Når det gjelder Excel, betyr dette at variablene vil være tilgjengelige så lenge den aktuelle Excel-arbeidsboken er åpen.
Public intA As Integer
Private intB As Integer
Function AddSomeNumbers() As Integer
intA = 2
intB = 3
AddSomeNumbers = intA + intB
End Function
'intA and intB are still both available. However, because intA is public, '
'it can also be referenced from code in other modules. Because intB is private,'
'it will be hidden from other modules.
Du kan også ha variabler som bare er tilgjengelige innenfor en bestemt modul (eller klasse) ved å erklære dem med nøkkelordet Private
.
Hvis du bygger en stor applikasjon og føler behov for å bruke globale variabler, vil jeg anbefale å lage en egen modul bare for dine globale variabler. Dette skal hjelpe deg med å holde styr på dem på ett sted.