Использование переменных в Excel подпрограмм в Visual Basic для приложений

Переводы статьи Переводы статьи
Код статьи: 843144 - Vizualiza?i produsele pentru care se aplic? acest articol.
Развернуть все | Свернуть все

В этой статье

ВВЕДЕНИЕ

В данной статье описывается использование переменных в корпорации Майкрософт Excel в Microsoft Visual Basic для подпрограмм Приложения.

Дополнительная информация

Переменные в процедуре sub

Мощная функция языков программирования является возможность что-то храните в переменной, чтобы содержимое переменной можно использовать или можно изменить позже в процедуре. В настоящем документе описывается ниже Использование переменных в Visual Basic:
  • Способ объявления переменных.
  • Процедуры и проектов, которые можно использовать переменная.
  • Время жизни переменной.

Объявите переменную в макросе

Объявите переменную в макросе, проще всего использовать Dim оператор. Следующая строка объявляет две переменные x и y, как Целые числа.
Dim x As Integer, y As Integer
С x и y, указываются в виде целых чисел, вы указываете Visual Basic в первоначальных достаточно памяти для переменной типа integer (2 байта для x и y) и что сведения, хранящиеся в x или y, целое число от -32768 до 32767.

Примечание При объявлении нескольких переменных с помощью одного Dim оператор, необходимо указать тип данных для каждого переменная.

Если не указать тип данных каждой переменной, как в Следующий код Visual Basic только переменной y указан как целое число переменная. Переменная x будет тип variant.
Dim x, y As Integer
Дополнительные сведения содержатся в разделе «тип данных Variant» раздел.

Для выполнения переменной test, выполните следующие действия.
  1. Сохраните и закройте все открытые книги и откройте новый книги.
  2. Запустите редактор Visual Basic (нажмите сочетание клавиш ALT + F11).
  3. На Вставка меню, нажмите кнопкуМодуль.
  4. Введите следующий код:
    Sub Variable_Test()
    Dim x As Integer, y As Integer
    x = 10
    y = 100
    MsgBox "the value of x is " & x & _
    Chr(13) & "the value of y is " & y
    End Sub
  5. Запустить Variable_Test макрос. Появляется следующее сообщение:
    значение x равно 10
    значение y равно 100
  6. Нажмите кнопку ОК.
  7. В Variable_Test макрос измените следующую строку:
    x = 10
    

    Чтобы:
    x = "error"
    
  8. Запустить Variable_Test макрос.
Вы получите ошибку времени выполнения, так как «ошибка» не целое число и вы пытаетесь присвоить целочисленной переменной строковое значение х.

Сводка типов данных

В следующей таблице перечислены стандартные типы данных переменной:

Свернуть эту таблицуРазвернуть эту таблицу
Тип данныхРазмер занимаемой памятиДопустимый диапазон
Логическое значение 2 байта Значение true или False
Целое число 2 байта -от 32 768 до 32 767
Длинный 4 байта -2147483648 до 2 147 483 647
Двойной 8 байт -1, 79769313486232E308 до -4, 94065645841247E-324 для отрицательных значений; 4, 94065645841247E-324 до 1, 79769313486232E308 для положительных значений
Валюта 8 байт -922,337,203,685,477.5808 до 922337203685477,5807
Дата 8 байт 1 Января 100 до 31 декабря 9999
Строка 10 байт + длина строки

Тип данных Variant

Если не указан тип данных при объявлении переменной или вообще не объявить переменную, Visual Basic автоматически определяет для этой переменной типа данных Variant. Ниже перечислены преимущества переменные, объявленные как этот тип данных:
  • Переменные могут содержать строки, даты, времени, Boolean или числовые значения.
  • Переменные можно преобразовать значения, содержащиеся в них автоматически.
Недостатком является то, что переменные типа variant требуется по крайней мере 16 количество байтов памяти. 16 байт памяти может быть значительным в крупных процедур или в сложных модулей.

Чтобы увидеть, как это работает Variable_Test макрос, выполните следующие действия:
  1. Измените код в Variable_Test макрос для:
    Sub Variable_Test()
    Dim x, y
    x = "string"
    y = 1.23
    MsgBox "the value of x is " & x & _
    Chr(13) & "the value of y is " & y
    End Sub
    
  2. Запустить Variable_Test макрос.
Не появится сообщение об ошибке, поскольку можно назначить для ничего переменные типа variant x и y.

Примечание Можно также оставить следующую строку и макрос будет по-прежнему работают как переменные x и y, обрабатываются как типы данных Variant.
Dim x, y

Область действия переменной

При объявлении переменной может или не будут отображаться для других макросы в одном модуле, в других модулях или в других проектах. Это доступность переменной в модулях называется областью. Три типа области, уровень процедуры, частные уровня модуля и открытый уровень модуля. Область зависит от того, как и где объявите переменную или переменные.

Область действия уровня процедуры

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

Чтобы проверить, не является переменной с областью действия уровня процедуры видели вне процедуры, где она была объявлена, выполните следующие действия.
  1. Вставьте новый модуль в проекте.
  2. Введите оба следующие макросы в данном модуле:
    Sub Macro1()
    Dim x As Integer
    x = 10
    MsgBox "x, as seen by Macro1 is " & x
    'the next line runs Macro2
    Macro2
    End Sub
    Sub Macro2()
    MsgBox "x, as seen by Macro2 is " & x
    End Sub
    
  3. Запустить Macro1.

    Появляется следующее сообщение:
    x, как показано на Macro1 — 10
  4. Нажмите кнопку ОК.

    Появление следующее сообщение:
    x, как показано на Macro2 является
  5. Нажмите кнопку ОК.
Macro2 не отображает значение переменной x, так как переменная x является локальным для Macro1.

Закрытые и открытые области действия уровня модуля

Можно определить переменные в разделе объявлений модуля (в верхней части модуля над всеми процедуры sub) и область вашей с помощью переменных Открытый оператор, Dim оператор, или Закрытый оператор. Если поместить Открытый заявление в начале вашей переменной, переменная будет доступные для всех макросов во всех модулях проекта. Если поместить либо Dim оператор или Закрытый Инструкция в начале вашей переменной переменная доступна только для макросов в модуль, где он был объявлен.

Для просмотра Разница между Открытый инструкции и Dim инструкции, выполните следующие действия:
  1. Сохраните и закройте все открытые книги, а затем откройте новый книги.
  2. Запустите редактор Visual Basic.
  3. Вставьте модуль в проект.
  4. В этом модуле введите следующий код:
    Public x As Integer
    Sub Macro_1a()
    x = 10
    MsgBox x
    Macro_1b
    End Sub
    Sub Macro_1b()
    x = x * 2
    MsgBox x
    Macro2
    End Sub
    
  5. Вставьте другой модуль в проекте.
  6. В этом модуле введите следующий код:
    Sub Macro2()
    x = x * 3
    MsgBox x
    End Sub
    
  7. Запустить Macro_1a в первый модуль макроса.

    С переменной x объявлен как «Открытый x As Integer», все три макросы в проекте имеют доступ к значения x. В первом окне сообщения отображается значение 10. Второе сообщение в поле отображается значение, равное 20 (поскольку x умножается 2 в Macro_1b). В третьем окне сообщения отображается значение 60 (поскольку значение x, был изменен в 20 Macro_1b а затем он был умножении на 3 в Macro2).
  8. Измените строку объявления в первый модуль из:
    Public x As Integer

    Чтобы:
    Dim x As Integer
  9. Запустить Macro_1a макрос.

    С переменной x, объявленные как «Dim x как Целое число", только макросы из первого модуля доступны значения x. Поэтому в первом окне сообщения отображается значение 10, отображается второе окно сообщения значение, равное 20, (поскольку x умножается 2 в Macro_1b) и третье окно сообщения отображается значение 0 (поскольку Macro2 не отображается значение x и неинициализированное значение ноль используется Макрос 2).
  10. Измените строку объявления в первый модуль из:
    Dim x As Integer

    Чтобы:
    Private x As Integer
  11. Запустить Macro_1a макрос.
Же окнах сообщений отображаются с помощью Закрытый Инструкция scope так, как они Dim оператор. Переменная x имеет туже область, закрытые для модуль, где она объявлена.

Примечание Если требуется, чтобы область действия переменной будет ограничен модуль, где она объявлена, использование Закрытый инструкции вместо Dim оператор. Они оба получить тот же эффект, но степень фрагменты кода для чтения при использовании Закрытый оператор.

Время жизни переменной

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

Инициализировать значение переменной

При запуске макроса все переменные инициализируются значение. Числовая переменная инициализируется с нулевым значением, является строкой переменной длины При инициализации строка нулевой длины (""), и заполнения строки фиксированной длины код ASCII 0. Переменные типа Variant инициализируются пуст. Пустой переменная представлена нулевое значение в числовом контексте и строка нулевой длины ("") в строковом контексте.

Переменные уровня процедуры

Если у вас есть переменной, объявленной в макрос с помощью Dim оператор, переменная сохраняет свое значение до тех пор, пока это макрос запущена. Если этот макрос вызывает другие макросы, является значение переменной сохраняется (не доступен для других макросов хотя) при условии, что эти другие макросы также работают.

Чтобы продемонстрировать, как уровень процедуры переменных работает, выполните следующие действия:
  1. Вставьте новый модуль в проекте.
  2. Введите оба следующие макросы в данном модуле:
    Sub Macro1()
    'set x as a procedure level variable
    Dim x As Integer
       MsgBox "the initialized value of x is " & x
    x = 10
    MsgBox "x is " & x
    'the next line runs Macro2
    Macro2
    MsgBox "x is still " & x
    End Sub
    Sub Macro2()
    MsgBox "x, as seen by Macro2 is " & x
    End Sub
    
  3. Запустить Macro1.

    Появляется следующее сообщение:
    инициализированное значение x равно 0
  4. Нажмите кнопку ОК.

    Появление следующее сообщение:
    x — 10
  5. Нажмите кнопку ОК.

    Появление следующее сообщение:
    x, как показано на Macro2 —
  6. Нажмите кнопку ОК.

    Macro2 не отображает значение переменной x, так как переменная x является локальным для Macro1. Появляется следующее сообщение:
    x — Тем не менее 10
  7. Нажмите кнопку ОК.
  8. Запустить Macro1.
Получать те же сообщения, описанные в шагах 3 через 6 поскольку сразу после Macro1 остановил на шаге 6 значение переменной x было потеряно. Таким образом, при перезапуске Macro1 на шаге 7 первое сообщение показывает значение x как нуль ( инициализированное значение).

Ключевое слово static

Если уровень процедуры переменная объявляется с помощью статического Ключевое слово, переменная сохраняет свое значение до сброса вашего проекта. Таким образом, При наличии статической переменной, при следующем вызове процедуры, статическая переменная инициализируется свое последнее значение.

Чтобы увидеть, как Ключевое слово static работает, выполните следующие действия.
  1. Измените код в Macro1 Чтобы:
    Sub Macro1()
    'set x as a procedure level variable
    Static x As Integer
       MsgBox "the initialized value of x is " & x
    x = x + 10
    MsgBox "x is " & x
    End Sub
    
  2. Запустить Macro1.

    Появляется следующее сообщение:
    инициализированное значение x равно 0
  3. Нажмите кнопку ОК.

    Появление следующее сообщение:
    x — 10
  4. Нажмите кнопку ОК.
  5. Запустить Macro1.

    Появляется следующее сообщение:
    инициализированное значение x равно 10
  6. Нажмите кнопку ОК.

    Появление следующее сообщение:
    x — 20
  7. Нажмите кнопку ОК.
Значения, отображаемые в сообщениях отличаются вторым время, поскольку как статическая переменная и переменная объявляется переменная x сохраняет свое значение после завершения работы Macro1 в первый раз.

Примечание Если переменная уровня модуля, ее время существования совпадает с Если бы он был статическая переменная уровня процедуры.

Для проверки существования переменная уровня модуля, выполните следующие действия:
  1. Измените код в модуль, который содержит Macro1 Чтобы изменить следующим образом:
    Dim x As Integer  'create a module-level variable
    Sub Macro1()
       MsgBox "the initialized value of x is " & x
    x = x + 10
    MsgBox "x is " & x
    End Sub
    
  2. Запустить Macro1.

    Появляется следующее сообщение:
    инициализированное значение x равно 0
  3. Нажмите кнопку ОК.

    Появление следующее сообщение:
    x — 10
  4. Нажмите кнопку ОК.
  5. Запустить Macro1.

    Появляется следующее сообщение:
    инициализированное значение x равно 10
  6. Нажмите кнопку ОК.

    Появление следующее сообщение:
    x — 20
  7. Нажмите кнопку ОК.
Значения, отображаемые в сообщениях отличаются вторым время, поскольку переменная x объявлены как статические переменные и сохраняет его значение после завершения работы Macro1 в первый раз.

Сбросить сбросить переменные проекта

Чтобы сбросить значение статической переменной или для Щелкните переменную уровня модуля Сброс кнопки на Стандарт панели инструментов или щелкните Сброс В меню Запустить меню.

После этого Macro1 проект, а затем вновь запустите Macro1, обратно к нулю и инициализируется значение переменной x Первое сообщение:
инициализированное значение x 0
Для получения дополнительных сведений щелкните следующий номер статьи базы знаний Майкрософт:
843145Описание подпрограмм Excel в Visual Basic для приложений (Массивы)
к началу статьи TOP

Свойства

Код статьи: 843144 - Последний отзыв: 19 сентября 2011 г. - Revision: 5.0
Информация в данной статье относится к следующим продуктам.
  • Microsoft Office Excel 2007
  • Microsoft Excel 2002 Standard Edition
  • Microsoft Excel 2000 Standard Edition
  • Microsoft Excel 97 Standard Edition
Ключевые слова: 
kbvba kbprogramming kbinfo kbmt KB843144 KbMtru
Переведено с помощью машинного перевода
ВНИМАНИЕ! Перевод данной статьи был выполнен не человеком, а с помощью программы машинного перевода, разработанной корпорацией Майкрософт. Корпорация Майкрософт предлагает вам статьи, переведенные как людьми, так и средствами машинного перевода, чтобы у вас была возможность ознакомиться со статьями базы знаний KB на родном языке. Однако машинный перевод не всегда идеален. Он может содержать смысловые, синтаксические и грамматические ошибки, подобно тому как иностранец делает ошибки, пытаясь говорить на вашем языке. Корпорация Майкрософт не несет ответственности за неточности, ошибки и возможный ущерб, причиненный в результате неправильного перевода или его использования. Корпорация Майкрософт также часто обновляет средства машинного перевода.
Эта статья на английском языке:843144

Отправить отзыв

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com