Ik heb de volgende code geschreven:
Function find_results_idle()
Public iRaw As Integer
Public iColumn As Integer
iRaw = 1
iColumn = 1
En ik krijg de foutmelding:
"invalid attribute in Sub or Function"
Weten jullie wat ik fout heb gedaan?
Ik probeerde Global
te gebruiken in plaats van Public
, maar kreeg hetzelfde probleem.
Ik probeerde de functie zelf als Public
te declareren, maar dat hielp ook niet.
Wat moet ik doen om de globale variabele aan te maken?
Dit is een vraag over scope.
Als je de variabelen alleen voor de levensduur van de functie wilt gebruiken, gebruik dan Dim
(afkorting van Dimensie) binnen de functie of sub om de variabelen te declareren:
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
Een globale variabele (zoals SLaks al aangaf) wordt buiten de functie aangegeven met het Public
sleutelwoord. Deze variabele zal beschikbaar zijn gedurende de hele levensduur van de applicatie. In het geval van Excel, betekent dit dat de variabelen beschikbaar zijn zolang die specifieke Excel werkmap geopend is.
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.
Je kunt ook variabelen hebben die alleen toegankelijk zijn binnen een bepaalde module (of klasse) door ze te declareren met het Private
sleutelwoord.
Als je een grote applicatie bouwt en de behoefte voelt om globale variabelen te gebruiken, zou ik aanraden om een aparte module te maken alleen voor je globale variabelen. Dit zou je moeten helpen om ze op één plaats bij te houden.