В настоящее время вы работаете в автономном режиме; ожидается повторное подключение к Интернету

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

ВНИМАНИЕ! Перевод данной статьи был выполнен не человеком, а с помощью программы машинного перевода, разработанной корпорацией Майкрософт. Корпорация Майкрософт предлагает вам статьи, переведенные как людьми, так и средствами машинного перевода, чтобы у вас была возможность ознакомиться со статьями базы знаний KB на родном языке. Однако машинный перевод не всегда идеален. Он может содержать смысловые, синтаксические и грамматические ошибки, подобно тому как иностранец делает ошибки, пытаясь говорить на вашем языке. Корпорация Майкрософт не несет ответственности за неточности, ошибки и возможный ущерб, причиненный в результате неправильного перевода или его использования. Корпорация Майкрософт также часто обновляет средства машинного перевода.

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

к началу статьи TOP
Дополнительная информация

Переменные в процедуре 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 Integerx = 10y = 100MsgBox "the value of x is " & x & _Chr(13) & "the value of y is " & yEnd 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 байт + длина строки

к началу статьи TOP

Тип данных Variant

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

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

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

Перейти к началу страницы

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

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

к началу статьи TOP

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

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

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

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

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

к началу статьи TOP

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

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

Для просмотра Разница между Открытый инструкции и Dim инструкции, выполните следующие действия:
  1. Сохраните и закройте все открытые книги, а затем откройте новый книги.
  2. Запустите редактор Visual Basic.
  3. Вставьте модуль в проект.
  4. В этом модуле введите следующий код:
    Public x As IntegerSub Macro_1a()x = 10MsgBox xMacro_1bEnd SubSub Macro_1b()x = x * 2MsgBox xMacro2End Sub
  5. Вставьте другой модуль в проекте.
  6. В этом модуле введите следующий код:
    Sub Macro2()x = x * 3MsgBox xEnd 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 оператор. Они оба получить тот же эффект, но степень фрагменты кода для чтения при использовании Закрытый оператор.

к началу статьи TOP

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

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

Перейти к началу страницы

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

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

к началу статьи сверху

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

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

Чтобы продемонстрировать, как уровень процедуры переменных работает, выполните следующие действия:
  1. Вставьте новый модуль в проекте.
  2. Введите оба следующие макросы в данном модуле:
    Sub Macro1()'set x as a procedure level variableDim x As Integer   MsgBox "the initialized value of x is " & xx = 10MsgBox "x is " & x'the next line runs Macro2Macro2MsgBox "x is still " & xEnd SubSub Macro2()MsgBox "x, as seen by Macro2 is " & xEnd 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 как нуль ( инициализированное значение).

к началу статьи TOP

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

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

Чтобы увидеть, как Ключевое слово static работает, выполните следующие действия.
  1. Измените код в Macro1 Чтобы:
    Sub Macro1()'set x as a procedure level variableStatic x As Integer   MsgBox "the initialized value of x is " & xx = x + 10MsgBox "x is " & xEnd 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 variableSub Macro1()   MsgBox "the initialized value of x is " & xx = x + 10MsgBox "x is " & xEnd 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 для приложений (Массивы)
Sub процедуры VBA переменные var xl2007 xl2003 xl2000 xl2002 xl

Внимание! Эта статья переведена автоматически

Свойства

Номер статьи: 843144 — последний просмотр: 09/19/2011 03:35:00 — редакция: 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
Отзывы и предложения