Объявление переменныхDeclaring variables

При объявлении переменных обычно используется оператор Dim.When declaring variables, you usually use a Dim statement. Оператор объявления может быть помещен внутрь процедуры для создания переменной на уровне процедуры.A declaration statement can be placed within a procedure to create a procedure-level variable. Или он может быть помещен в начале модуля в разделе объявлений, чтобы создать переменную на уровне модуля.Or it may be placed at the top of a module, in the Declarations section, to create a module-level variable.

В примере ниже создается переменная и указывается тип данных "String".The following example creates the variable and specifies the String data type.

Dim strName As String 

Если данный оператор отображается в процедуре, переменная strName может использоваться только в этой процедуре.If this statement appears within a procedure, the variable strName can be used only in that procedure. Если же оператор отображается в разделе объявлений модуля, переменная strName доступна для всех процедур данного модуля, но недоступна для процедур других модулей проекта.If the statement appears in the Declarations section of the module, the variable strName is available to all procedures within the module, but not to procedures in other modules in the project.

Чтобы предоставить доступ к переменной всем процедурам проекта, перед ней нужно поставить оператор Public, как показано в примере ниже:To make this variable available to all procedures in the project, precede it with the Public statement, as in the following example:

Public strName As String 

Дополнительные сведения об именовании переменных см. в статье Правила именования в Visual Basic.For information about naming your variables, see Visual Basic naming rules.

Переменные могут быть объявлены одним из следующих типов данных: Boolean, Byte, Integer, Long, Currency, Single, Double, Date, String (для строк переменной длины), String * length (для строк фиксированной длины), Object или Variant.Variables can be declared as one of the following data types: Boolean, Byte, Integer, Long, Currency, Single, Double, Date, String (for variable-length strings), String * length (for fixed-length strings), Object, or Variant. Если тип данных не указан, по умолчанию присваивается тип Variant.If you do not specify a data type, the Variant data type is assigned by default. Вы также можете создать определяемый пользователем тип с помощью оператора Type.You can also create a user-defined type by using the Type statement.

Вы можете объявить несколько переменных в одном операторе.You can declare several variables in one statement. Чтобы указать тип данных, необходимо задать тип данных для каждой переменной.To specify a data type, you must include the data type for each variable.

В приведенном ниже операторе переменные intX, intY и intZ объявлены типом Integer.In the following statement, the variables intX, intY, and intZ are declared as type Integer.

Dim intX As Integer, intY As Integer, intZ As Integer 

В приведенном ниже операторе intX и intY объявлены как Variant и только intZ объявлен как тип Integer.In the following statement, intX and intY are declared as type Variant, and only intZ is declared as type Integer.

Dim intX, intY, intZ As Integer 

Нет необходимости указывать тип данных переменной в операторе объявления.You don't have to supply the variable's data type in the declaration statement. Если вы не укажите тип данных, переменной будет присвоен тип Variant.If you omit the data type, the variable will be of type Variant.

Сокращение для объявления переменных x и y типом Integer в приведенном выше оператореThe shorthand to declare x and y as Integer in the statement above is:

Dim intX%, intY%, intZ as Integer

Сокращение для типов: % – Integer; & – Long; @ – Currency; # – Double; !The shorthand for the types is: % -integer; & -long; @ -currency; # -double; ! – Single; $ – String-single; $ -string

Оператор PublicPublic statement

Оператор Public используется для объявления общих переменных на уровне модуля.You can use the Public statement to declare public module-level variables.

Public strName As String 

Общие переменные могут использоваться в любой процедуре проекта.Public variables can be used in any procedures in the project. Если общая переменная объявлена в стандартном модуле или модуле класса, она может использоваться в любых проектах, содержащих ссылку на проект, в котором объявлена данная общая переменная.If a public variable is declared in a standard module or a class module, it can also be used in any projects that reference the project where the public variable is declared.

Оператор PrivatePrivate statement

Оператор Private используется для объявления частных переменных на уровне модуля.You can use the Private statement to declare private module-level variables.

Private MyName As String 

Частные переменные могут использоваться только процедурами одного модуля.Private variables can be used only by procedures in the same module.

Примечание

На уровне модуля оператор Dim является эквивалентным оператору Private.When used at the module level, the Dim statement is equivalent to the Private statement. Вы можете использовать оператор Private, чтобы упростить чтение и интерпретацию кода.You might want to use the Private statement to make your code easier to read and interpret.

Оператор StaticStatic statement

Если для объявления переменной в процедуре используется оператор Static вместо оператора Dim, объявленная переменная сохраняет свое значение между вызовами в этой процедуре.When you use the Static statement instead of a Dim statement to declare a variable in a procedure, the declared variable will retain its value between calls to that procedure.

Оператор Option ExplicitOption Explicit statement

В Visual Basic можно неявно объявить переменную, просто используя оператор присвоения значения.You can implicitly declare a variable in Visual Basic simply by using it in an assignment statement. Все неявно объявленные переменные относятся к типу Variant.All variables that are implicitly declared are of type Variant. Для переменных типа Variant требуется больший объем памяти, чем для большинства других переменных.Variables of type Variant require more memory resources than most other variables. Приложение будет работать эффективнее, если переменные будут явно объявленными и им будет присвоен определенный тип данных.Your application will be more efficient if you declare variables explicitly and with a specific data type. Явное объявление переменных снижает вероятность возникновения ошибок, вызванных конфликтом имен или опечатками.Explicitly declaring all variables reduces the incidence of naming-conflict errors and spelling mistakes.

Если вы не хотите, чтобы в Visual Basic были неявные объявления, то оператор Option Explicit должен стоять в модуле перед всеми процедурами.If you don't want Visual Basic to make implicit declarations, you can place the Option Explicit statement in a module before any procedures. Этот оператор требует явного объявления всех переменных модуля.This statement requires you to explicitly declare all variables within the module. Если модуль содержит оператор Option Explicit, то при обнаружении необъявленной ранее переменной или опечатки в ее имени Visual Basic выдаст ошибку времени компиляции.If a module includes the Option Explicit statement, a compile-time error will occur when Visual Basic encounters a variable name that has not been previously declared, or that has been spelled incorrectly.

В программной среде Visual Basic имеется возможность задавать параметр, который будет автоматически включать оператор Option Explicit во все новые модули.You can set an option in your Visual Basic programming environment to automatically include the Option Explicit statement in all new modules. Справочная информация по изменению параметров среды Visual Basic предоставлена в документации приложения.See your application's documentation for help on how to change Visual Basic environment options. Обратите внимание, что данный параметр не меняет уже написанный код.Note that this option does not change existing code that you have written.

Примечание

Статические и динамические массивы нужно объявлять в явном виде.You must explicitly declare fixed arrays and dynamic arrays.

Объявление объектной переменной для автоматизацииDeclaring an object variable for automation

При использовании приложения для управления объектами другого приложения необходимо указать ссылку на библиотеку типов этого другого приложения.When you use one application to control another application's objects, you should set a reference to the other application's type library. Когда ссылка указана, можно объявлять объектные переменные в соответствии с наиболее подходящими для них типами.After you set a reference, you can declare object variables according to their most specific type. Например, если вы указываете ссылку на библиотеку типов Microsoft Excel при работе в Microsoft Word, то можете объявить переменную типа Worksheet внутри Word, чтобы она представляла объект Worksheet приложения Excel.For example, if you are in Microsoft Word when you set a reference to the Microsoft Excel type library, you can declare a variable of type Worksheet from within Word to represent an Excel Worksheet object.

При использовании другого приложения для управления объектами Microsoft Access, как правило, можно объявлять объектные переменные согласно наиболее подходящим для них типам.If you are using another application to control Microsoft Access objects, in most cases, you can declare object variables according to their most specific type. Вы можете также использовать ключевое слово New для автоматического создания нового экземпляра объекта.You can also use the New keyword to create a new instance of an object automatically. Однако может возникнуть необходимость указать, что объект принадлежит Microsoft Access.However, you may have to indicate that it is a Microsoft Access object. Например, при объявлении объектной переменной, представляющей форму Access внутри Visual Basic, необходимо сделать различимыми объект Form приложения Access и объект Form приложения Visual Basic.For example, when you declare an object variable to represent an Access form from within Visual Basic, you must distinguish the Access Form object from a Visual Basic Form object. Для этого следует включать имя библиотеки типов в объявление переменной, как показано в примере ниже:Include the name of the type library in the variable declaration, as in the following example:

Dim frmOrders As New Access.Form 

Некоторые приложения не распознают отдельные объектные типы Access.Some applications don't recognize individual Access object types. Даже если в этих приложениях указана ссылка на библиотеку типов Access, все объектные переменные Access необходимо объявлять с типом Object.Even if you set a reference to the Access type library from these applications, you must declare all Access object variables as type Object. Также невозможно использовать ключевое слово New для создания нового экземпляра объекта.Nor can you use the New keyword to create a new instance of the object.

В примере ниже показано, как объявлять переменную, представляющую экземпляр объекта Application Access в приложении, которое не распознает объектные типы Access.The following example shows how to declare a variable to represent an instance of the Access Application object from an application that doesn't recognize Access object types. Затем приложение создает экземпляр объекта Application.The application then creates an instance of the Application object.

Dim appAccess As Object 
Set appAccess = CreateObject("Access.Application")

В документации приложения предоставлена информация о поддерживаемом им синтаксисе.To determine which syntax an application supports, see the application's documentation.

См. такжеSee also

Поддержка и обратная связьSupport and feedback

Есть вопросы или отзывы, касающиеся Office VBA или этой статьи?Have questions or feedback about Office VBA or this documentation? Руководство по другим способам получения поддержки и отправки отзывов см. в статье Поддержка Office VBA и обратная связь.Please see Office VBA support and feedback for guidance about the ways you can receive support and provide feedback.