Написах следния код:
Function find_results_idle()
Public iRaw As Integer
Public iColumn As Integer
iRaw = 1
iColumn = 1
И получавам съобщението за грешка:
"invalid attribute in Sub or Function"
Знаете ли какво съм направил погрешно?
Опитах се да използвам Global
вместо Public
, но се получи същият проблем.
Опитах се да декларирам самата функция като Public
, но и това не помогна.
Какво трябва да направя, за да създам глобалната променлива?
Това е въпрос за scope.
Ако искате променливите да продължат само през целия живот на функцията, използвайте Dim
(съкращение от Dimension) вътре във функцията или подфункцията, за да декларирате променливите:
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
Една глобална променлива (както посочи SLaks) се декларира извън функцията, като се използва ключовата дума Public
. Тази променлива ще бъде достъпна през целия живот на вашето работещо приложение. В случая на Excel това означава, че променливите ще бъдат достъпни, докато е отворена конкретната работна книга на Excel.
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.
Можете също така да имате променливи, които са достъпни само в рамките на определен модул (или клас), като ги декларирате с ключовата дума Private
.
Ако изграждате голямо приложение и чувствате необходимост да използвате глобални променливи, бих ви препоръчал да създадете отделен модул само за вашите глобални променливи. Това би ви помогнало да ги следите на едно място.