Как я объявляю глобальную переменную в VBA?

Я написал следующий код:

Function find_results_idle()

    Public iRaw As Integer
    Public iColumn As Integer
    iRaw = 1
    iColumn = 1

И я получаю сообщение об ошибке:

"недопустимый атрибут в Sub или Function"

Вы знаете то, что я сделал неправильно?

Я пытался использовать Global вместо Public, но получил ту же проблему.

Я пытался объявить саму функцию как 'Общественность, но это также сделало отрицательный результат.

Что я должен сделать для создания глобальной переменной?

127
задан PGSystemTester 8 July 2019 в 19:39
поделиться

4 ответа

Вам нужно объявить переменные вне функции:

Public iRaw As Integer
Public iColumn As Integer

Function find_results_idle()
    iRaw = 1
    iColumn = 1
173
ответ дан 24 November 2019 в 00:42
поделиться

Чтобы использовать глобальные переменные, вставьте новый модуль из пользовательского интерфейса проекта VBA и объявите переменные с помощью Global

Global iRaw As Integer
Global iColumn As Integer
33
ответ дан 24 November 2019 в 00:42
поделиться

Если эта функция находится в модуле / классе, вы можете просто записать их вне функции, чтобы она имела Глобальную область действия . Глобальная область действия означает, что к переменной может получить доступ другая функция в том же модуле / классе (если вы используете 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
14
ответ дан 24 November 2019 в 00:42
поделиться

Это вопрос о области .

Если вы хотите, чтобы переменные действовали только в течение всего времени существования функции, используйте 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 .

Если вы создаете большое приложение и чувствуете необходимость использовать глобальные переменные, я бы рекомендовал создать отдельный модуль только для ваших глобальных переменных. Это должно помочь вам отслеживать их в одном месте.

116
ответ дан 24 November 2019 в 00:42
поделиться
Другие вопросы по тегам:

Похожие вопросы: