Я написал следующий код:
Function find_results_idle()
Public iRaw As Integer
Public iColumn As Integer
iRaw = 1
iColumn = 1
И я получаю сообщение об ошибке:
"недопустимый атрибут в Sub или Function"
Вы знаете то, что я сделал неправильно?
Я пытался использовать Global
вместо Public
, но получил ту же проблему.
Я пытался объявить саму функцию как 'Общественность, но это также сделало отрицательный результат.
Что я должен сделать для создания глобальной переменной?
Вам нужно объявить переменные вне функции:
Public iRaw As Integer
Public iColumn As Integer
Function find_results_idle()
iRaw = 1
iColumn = 1
Чтобы использовать глобальные переменные, вставьте новый модуль из пользовательского интерфейса проекта VBA и объявите переменные с помощью Global
Global iRaw As Integer
Global iColumn As Integer
Если эта функция находится в модуле / классе, вы можете просто записать их вне функции, чтобы она имела Глобальную область действия
. Глобальная область действия означает, что к переменной может получить доступ другая функция в том же модуле / классе (если вы используете dim
как оператор объявления, используйте public
, если вы хотите переменные доступны для всех функций во всех модулях):
Dim iRaw As Integer
Dim iColumn As Integer
Function find_results_idle()
iRaw = 1
iColumn = 1
End Function
Function this_can_access_global()
iRaw = 2
iColumn = 2
End Function
Это вопрос о области .
Если вы хотите, чтобы переменные действовали только в течение всего времени существования функции, используйте 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
A глобальная переменная (как указал 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
.
Если вы создаете большое приложение и чувствуете необходимость использовать глобальные переменные, я бы рекомендовал создать отдельный модуль только для ваших глобальных переменных. Это должно помочь вам отслеживать их в одном месте.