What is VBA Const (Constants)?
Variables are the heart and soul of any programming language. We have never seen a coder or developer who does not rely on variables in their project or program. As a coder, no one is not different from others. We use variables 99% of the time. We all use the “Dim” statement; we declare VBA variablesVariable declaration is necessary in VBA to define a variable for a specific data type so that it can hold values; any variable that is not defined in VBA cannot hold values.read more. Our articles have shown you about declaring variables through the “Dim” statement. But we declare variables using another way as well. This article will show you the alternative route of declaring variables, i.e., the “VBA Constant” method.
“Const” stands for “Constants” in VBA. Using the VBA “Const” word, we can declare variables like how we declare variables using the “Dim” keyword. We can display this variable at the top of the module, between the module, in any subroutine in VBASUB in VBA is a procedure which contains all the code which automatically gives the statement of end sub and the middle portion is used for coding. Sub statement can be both public and private and the name of the subprocedure is mandatory in VBA.read more and function procedure, and the class module.
To declare the variable, we need to use the word “Const” to display the constant value. Once the variable is declared and assigned a cost, we cannot change the weight throughout the script.
Table of contents
- What is VBA Const (Constants)?
- Syntax of Const Statement in VBA
- Condition of Constants in VBA
- Examples of Const Statement in VBA
- Make Constants Available Across Modules
- Difference Between VBA Dim Statement & Const Statement
- Recommended Articles
Syntax of Const Statement in VBA
The Const statement is slightly different from the “Dim” statement. To understand it better, let us look at the well-written syntax of the VBA Const statement.
Const [Variable Name] As [Data Type] = [Variable Value]
- Const: With this word, we initialize the process of declaring the constants.
- Variable Name: This is as usual as naming the variable. We rather call it Const Name instead of Variable Name.
- Data Type: What kind of value our declared variable is going to hold.
- Variable Name: Next and final part is what is the value we are going to assign to the variable we have declared. The given weight should be as per the data type.
Condition of Constants in VBA
- The name of the constant we are declaring can contain a maximum of 256 characters in length.
- The constant’s name cannot start with a number; rather, it should begin with the alphabet.
- We cannot VBA reserved keywords to declare the constants.
- The constant name should not contain any space or special characters except the underscore character.
- One can declare multiple constants with a single statement.
Examples of Const Statement in VBA
Let’s declare your first variable through the VBA Const statement. After that, we can declare constants at the subprocedure, module, and project levels.
Now, look at how to declare at the sub procedure level.
In the above example, we declared constant “k” inside the sub procedure named Const_Example1(). And we have assigned the value as 75.
Now, look at the module level Constant declaration.
At the top of the module, we have declared three constants in the module “Module 1”.
These VBA constants can be accessed in “Module 1” at any sub procedures within this module, i.e., “Module 1.”
Make Constants Available Across Modules
We can access those constants within the module with all the subprocedures when we declare the constants at the top of the VBA class moduleUsers have the ability to construct their own VBA Objects in VBA Class Modules. The objects created in this module can be used in any VBA project.read more.
But how can we make them available with all the modules in the workbook?
To make them available across modules, we need to declare them with the word “Public.”
Now, the above variable is not only available with “Module 1.” Instead, we can use “Module 2” as well.
Difference Between VBA Dim Statement & Const Statement
It would help if you doubted the difference between the traditional “Dim” statement and the new “Const” statement in VBA.
We have one difference with these, i.e., look at the below image.
In the first image, as soon as we declare a variable, we have assigned some values to them.
But in the second image, using the “Dim” statement first, we have declared variables.
After declaring a variable, we have assigned values separately in the different lines.
Like this, we can use the VBA “Const” statement to declare constants, which is a similar way of communicating variables with the “Dim” statement.
Recommended Articles
This article has been a guide to VBA Const (Constants). Here we discuss how to use the Constant statement in VBA along with examples and its critical differences with Dim information. Below are some useful Excel articles related to VBA: –
- VBA Do Loop
- VBA DoEvents
- VBA Option Explicit
- VBA Text
Return to VBA Code Examples
In this Article
- What is a Constant
- Data Types used by Constants
- Declaring a Constant within a Procedure
- Declaring a Constant within a Module
- Declaring Constants at a Global Level
This tutorial will demonstrate the use of VBA Constants.
A constant is similar to a variable and is declared in a similar way. There is, however, a major difference between them!
What is a Constant
A constant is a value that we declare in our code and consequently it is reserved in our computer’s memory and stored. We have to name our constant and it’s good practice to declare the data type of our constant. When we declare the data type, we are telling the program what type of data needs to be stored by our constant .
We will use the constant in our code, and the program will also access our constant. Unlike a variable, where the actual value can change while the code is running, a constant value never changes.
Data Types used by Constants
Constants use the same data type as Variables. The most common data types for Constants are as follows:
• String – this is used to store text values.
• Boolean – this is used to store TRUE or FALSE values.
• Integer – this is used to store whole number values.
• Double – this is used to store numbers with decimals.
• Date – this is used to store dates.
To see a complete list of all data types used by Variables and Constants in VBA, click here.
In VBA, we have to use a Const statement in order to declare a Constant. We can declare constants in a similar way to declaring Variables – at Procedure Level, at Module Level and at a Global Level.
Declaring a Constant within a Procedure
To declare a Constant at Procedure level, we declare it inside the procedure.
Sub CompanyDetails()
Const strCompany As String = "ABC Suppliers"
Const strAddress As String = "213 Oak Lane, Highgate"
MsgBox strCompany & vbCrLf & strAddress
End Sub
When we run the code, the message box will return the constant values.
Because the Constant is declared at Procedure level, we can declare a Constant with the same name in a different Procedure.
If we run the second Procedure, the Constant value stored in that Procedure is returned.
Declaring a Constant within a Module
If we want a Constant value to be available to all Procedures within a Module, we need to declare the constant at Module level.
This will make the same constant available to multiple procedures WITHIN that module only.
Should you use the Constant in a different module, an error will occur.
Declaring Constants at a Global Level
You can declare Constants at a Global Level which would then mean you can use them in all the Modules contained in your entire VBA Project.
To declare a Constant as a Global Constant, we need to put the word PUBLIC in front of the declaration statement.
For example:
Public Const strCompany as string = "ABC Suppliers"
This will allow the Constant to be used in all the modules regardless of where is is declared.
NOTE: you can ONLY declare a public constant at a Module level, you CANNOT declare a public constant within a procedure.
VBA Coding Made Easy
Stop searching for VBA code online. Learn more about AutoMacro — A VBA Code Builder that allows beginners to code procedures from scratch with minimal coding knowledge and with many time-saving features for all users!
Learn More!
Home / VBA / VBA Constants
What is a Constant in VBA?
In VBA, a constant is a storage box that is itself stored in your system and it can store a value in it for you, but the value which you assign to it cannot be changed during the execution of the code. In VBA there are two different kinds of constants that you can use:
- Intrinsic Constants
- User-Defined Constants
Intrinsic constants are those which are built into the VBA language itself (for example, the built-in constant vbOKCancel which you use in the message box), and on the other hand, user-defined constants are those which you can create by assigning a value to it.
Declare a Constant in VBA
- Use the keyword “Const”.
- Specify a name for the constant.
- Use the keyword “As” after the name.
- Specify the “Data Type” for the constant according to the value you want to assign to it.
- Equals to “=” sign.
- In the end, the value you want to assign to it.
Above is a constant that stores a birthdate. Now if you think, a birth date is something that is supposed to be fixed and for this kind of value, you can use a constant.
Scope of a Constant
Constant has the same scope as variables. When you declare a constant, it has a procedure-level scope, which means you can use it anywhere within the procedure. But you can declare a constant using a private or public scope.
A private constant is available only to the procedure where it is declared as a constant. To declare a private constant, you need to use the keywords “Private”, just like the following example.
Private Const iName As String = “Puneet”
And in the same way, you need to use the keyword “Public” when you need to declare a constant as public.
Public Const iPrice As String = “$3.99”
В VBA, как и в любом другом языке программирования, переменные и константы используются для хранения каких-либо значений. Как и следует из названия, переменные могут изменяться, константы же хранят фиксированные значения.
Например, константа Pi хранит значение 3,14159265… Число «Пи» не будет изменяться в ходе выполнения программы, но все же хранить такое значение удобнее как константу.
В то же время мы можем использовать переменную sVAT_Rate для хранения ставки НДС на покупаемые товары. Величина переменной sVAT_Rate может изменяться в зависимости от того, что за товар приобретается.
Содержание
- Типы данных
- Объявление переменных и констант
- Option Explicit
- Область действия переменных и констант
Типы данных
Все переменные и константы относятся к определённому типу данных. В таблице ниже приведены типы данных, используемые в VBA, с описанием и диапазоном возможных значений:
Тип данных | Размер | Описание | Диапазон значений |
---|---|---|---|
Byte | 1 байт | Положительные целые числа; часто используется для двоичных данных | от 0 до 255 |
Boolean | 2 байта | Может принимать значения либо True, либо False | True или False |
Integer | 2 байта | Целые числа (нет дробной части) | от -32 768 до +32 767 |
Long | 4 байта | Большие целые числа (нет дробной части) | от -2 147 483 648 до +2 147 483 647 |
Single | 4 байта | Число с плавающей точкой одинарной точности | от -3.4e38 до +3.4e38 |
Double | 8 байт | Число с плавающей точкой двойной точности | от -1.8e308 до +1.8e308 |
Currency | 8 байт | Число с плавающей точкой, с фиксированным количеством десятичных разрядов | от -922 337 203 685 477.5808 до +922 337 203 685 477.5807 |
Date | 8 байт | Дата и время – данные типа Date представлены числом с плавающей точкой. Целая часть этого числа выражает дату, а дробная часть – время | от 1 Января 100 до 31 Декабря 9999 |
Object | 4 байта | Ссылка на объект | Любая ссылка на объект |
String | изменяется | Набор символов. Тип String может иметь фиксированную или изменяющуюся длину. Чаще используется с изменяющейся длиной | Фиксированной длины — приблизительно до 65 500 символов. Переменной длины — приблизительно до 2 миллиардов символов |
Variant | изменяется | Может содержать дату, число с плавающей точкой или строку символов. Этот тип используют в тех случаях, когда заранее не известно, какой именно тип данных будет введён | Число – Double, строка – String |
Очевидно, что пользуясь приведённой выше таблицей и правильно выбирая тип данных, можно использовать память более экономно (например, выбрать тип данных Integer вместо Long или Single вместо Double). Однако, используя более компактные типы данных, нужно внимательно следить за тем, чтобы в коде не было попыток уместить в них не соразмерно большие значения.
Объявление переменных и констант
Примечание переводчика: Говоря о переменных в VBA, стоит упомянуть ещё один очень важный момент. Если мы объявляем переменную, но не присваиваем ей какое-либо значение, то она инициализируется значением по умолчанию:
• текстовые строки — инициализируются пустыми строками;
• числа — значением 0;
• переменные типа Boolean — False;
• даты — 30 декабря 1899.
Прежде чем использовать переменную или константу, её нужно объявить. Для этого в макрос добавляют вот такую простую строку кода:
Dim Имя_Переменной As Тип_Данных
В показанной выше строке кода Имя_Переменной – это имя переменной, которая будет использована в коде, а Тип_Данных – это один из типов данных из таблицы, приведённой чуть ранее в этой статье. Например:
Dim sVAT_Rate As Single Dim i As Integer
Аналогично объявляются константы, но при объявлении констант обязательно сразу указывается их значение. Например, вот так:
Const iMaxCount = 5000 Const iMaxScore = 100
Объявлять переменные в Excel не обязательно. По умолчанию все введённые, но не объявленные переменные в Excel будут иметь тип Variant и смогут принять как числовое, так и текстовое значение.
Таким образом, программист в любой момент сможет использовать новую переменную (даже если она не была объявлена), и Excel будет рассматривать её как переменную типа Variant. Однако, есть несколько причин, почему так поступать не следует:
- Использование памяти и скорость вычислений. Если не объявлять переменную с указанием типа данных, то по умолчанию для неё будет установлен тип Variant. Этот тип данных использует больше памяти, чем другие типы данных.Казалось бы, несколько лишних байт на каждую переменную – не так уж много, но на практике в создаваемых программах могут быть тысячи переменных (особенно при работе с массивами). Поэтому излишняя память, используемая переменными типа Variant, по сравнению с переменными типа Integer или Single, может сложится в значительную сумму.К тому же, операции с переменными типа Variant выполняются гораздо медленнее, чем с переменными других типов, соответственно лишняя тысяча переменных типа Variant может значительно замедлить вычисления.
- Профилактика опечаток в именах переменных. Если все переменные объявляются, то можно использовать оператор VBA — Option Explicit (о нём расскажем далее), чтобы выявить все не объявленные переменные.Таким образом исключается появление в программе ошибки в результате не верно записанного имени переменной. Например, используя в коде переменную с именем sVAT_Rate, можно допустить опечатку и, присваивая значение этой переменной, записать: «VATRate = 0,175». Ожидается, что с этого момента, переменная sVAT_Rate должна содержать значение 0,175 – но, конечно же, этого не происходит. Если же включен режим обязательного объявления всех используемых переменных, то компилятор VBA сразу же укажет на ошибку, так как не найдёт переменную VATRate среди объявленных.
- Выделение значений, не соответствующих объявленному типу переменной. Если объявить переменную определённого типа и попытаться присвоить ей данные другого типа, то появится ошибка, не исправив которую, можно получить сбой в работе программы.На первый взгляд, это может показаться хорошей причиной, чтобы не объявлять переменные, но на самом деле, чем раньше выяснится, что одна из переменных получила не те данные, которые должна была получить – тем лучше! Иначе, если программа продолжит работу, результаты могут оказаться неверными и неожиданными, а найти причину ошибок будет гораздо сложнее.Возможно также, что макрос будет «успешно» выполнен. В результате ошибка останется незамеченной и работа продолжится с неверными данными!
В связи с этим, неверный тип данных желательно обнаруживать и как можно раньше исправлять такие ошибки в коде. По этим причинам при написании макроса VBA рекомендуется объявлять все переменные.
Option Explicit
Оператор Option Explicit заставляет объявлять все переменные, которые будут использованы в коде VBA, и при компиляции выделяет все не объявленные переменные как ошибки (прежде чем будет запущено выполнение кода). Применить этот оператор не сложно – просто запишите в самом верху файла VBA такую строку:
Option Explicit
Если хотите всегда вставлять Option Explicit в начало каждого нового созданного модуля VBA, то это можно делать автоматически. Для этого необходимо включить параметр Require Variable Declaration в настройках редактора VBA.
Это делается так:
- В меню редактора Visual Basic нажмите Tools > Options
- В появившемся диалоговом окне откройте вкладку Editor
- Отметьте галочкой параметр Require Variable Declaration и нажмите ОК
При включенном параметре строка Option Explicit будет автоматически вставляться в начало каждого нового созданного модуля.
Область действия переменных и констант
Каждая объявленная переменная или константа имеет свою ограниченную область действия, то есть ограниченную часть программы, в которой эта переменная существует. Область действия зависит от того, где было сделано объявление переменной или константы. Возьмём, к примеру, переменную sVAT_Rate, которая используется в функции Total_Cost. В следующей таблице рассмотрены два варианта области действия переменной sVAT_Rate, объявленной в двух различных позициях в модуле:
Option Explicit Dim sVAT_Rate As Single Function Total_Cost() As Double ... End Function |
Если переменная sVAT_Rate объявлена в самом начале модуля, то областью действия этой переменной будет весь модуль (т.е. переменная sVAT_Rate будет распознаваться всеми процедурами в этом модуле).
Следовательно, если в функции Total_Cost переменной sVAT_Rate будет присвоено некоторое значение, то следующая функция, выполняемая в пределах этого же модуля, будет использовать переменную sVAT_Rate с этим же значением. Однако, если будет вызвана какая-то функция, расположенная в другом модуле, то для неё переменная sVAT_Rate будет не известна. |
Option Explicit Function Total_Cost() As Double Dim sVAT_Rate As Single ... End Function |
Если переменная sVAT_Rate объявлена в начале функции Total_Cost, то её область действия будет ограничена только этой функцией (т.е. в пределах функции Total_Cost, можно будет использовать переменную sVAT_Rate, а за её пределами – нет).
При попытке использовать sVAT_Rate в другой процедуре, компилятор VBA сообщит об ошибке, так как эта переменная не была объявлена за пределами функции Total_Cost (при условии, что использован оператор Option Explicit). |
В показанном выше примере переменная объявлена на уровне модуля при помощи ключевого слова Dim. Однако, бывает необходимо, чтобы объявленными переменными можно было пользоваться в других модулях. В таких случаях для объявления переменной вместо ключевого слова Dim нужно использовать ключевое слово Public.
Кстати, для того, чтобы объявить переменную на уровне модуля, вместо ключевого слова Dim можно использовать ключевое слово Private, которое укажет на то, что данная переменная предназначена для использования только в текущем модуле.
Для объявления констант также можно использовать ключевые слова Public и Private, но не вместо ключевого слова Const, а вместе с ним.
В следующих примерах показано использование ключевых слов Public и Private в применении к переменным и к константам.
Option Explicit Public sVAT_Rate As Single Public Const iMax_Count = 5000 ... |
В этом примере ключевое слово Public использовано для объявления переменной sVAT_Rate и константы iMax_Count. Областью действия объявленных таким образом элементов будет весь текущий проект.
Это значит, что sVAT_Rate и iMax_Count будут доступны в любом модуле проекта. |
Option Explicit Private sVAT_Rate As Single Private Const iMax_Count = 5000 ... |
В этом примере для объявления переменной sVAT_Rate и константы iMax_Count использовано ключевое слово Private. Областью действия этих элементов является текущий модуль.
Это значит, что sVAT_Rate и iMax_Count будут доступны во всех процедурах текущего модуля, но не будут доступны для процедур, находящихся в других модулях. |
Оцените качество статьи. Нам важно ваше мнение:
Содержание
- Константы, определенные пользователем (Visual Basic)
- Использование инструкций Const
- Область User-Defined констант
- Избегание циклических ссылок
- Объявление констант
- См. также
- Поддержка и обратная связь
- Оператор Const
- Синтаксис
- Замечания
- Пример
- См. также
- Поддержка и обратная связь
- Использование констант
- Типы констант
- Определение констант по префиксу
- Определение констант по ссылке на библиотеку
- См. также
- Поддержка и обратная связь
- Оператор Const (Visual Basic)
- Синтаксис
- Компоненты
- Комментарии
- Правила
- Правила типов данных
- Поведение
- Пример 1
- Пример 2
Константы, определенные пользователем (Visual Basic)
Константой является понятное имя, которое занимает место числа или строки, которая не изменяется. Как можно понять из их названия, константы хранят значения, которые остаются постоянными в ходе выполнения приложения. Можно использовать константы, определенные элементами управления или компонентами, с которыми вы работаете, или создать собственные. Константы, создаваемые самостоятельно, описываются как определяемые пользователем.
Константу можно объявить с Const помощью оператора , используя те же рекомендации, что и для создания имени переменной. Если Option Strict имеет значение On , необходимо явно объявить тип константы.
Использование инструкций Const
Оператор Const может представлять математическое количество или количество даты и времени:
Он также может определять String константы:
Выражение справа от знака равенства ( = ) часто является числом или литеральной строкой, но оно также может быть выражением, которое приводит к числу или строке (хотя это выражение не может содержать вызовы функций). Константы можно даже определить в терминах ранее определенных констант:
Область User-Defined констант
Область Const действия оператора совпадает с областью действия переменной, объявленной в том же расположении. Область можно указать любым из следующих способов:
Чтобы создать константу, которая существует только внутри процедуры, объявите ее в рамках этой процедуры.
Чтобы создать константу, доступную для всех процедур в классе, но не для кода за пределами этого модуля, объявите ее в разделе объявлений класса.
Чтобы создать константу, доступную всем членам сборки, но не внешним клиентам сборки, объявите ее с помощью Friend ключевого слова в разделе declarations класса .
Чтобы создать константу, доступную во всем приложении, объявите ее с помощью ключевого Public слова в разделе объявлений класса .
Избегание циклических ссылок
Поскольку константы можно определить с точки зрения других констант, можно случайно создать цикл или циклическую ссылку между двумя или более константами. Цикл возникает при наличии двух или более открытых констант, каждая из которых определяется с точки зрения другой, как показано в следующем примере:
При возникновении цикла Visual Basic создает ошибку компилятора.
Источник
Объявление констант
Объявляя константу, вы можете присвоить значению значащее имя. Оператор Const используется для объявления константы и задания ее значения. После того, как константа объявлена, изменить ее или присвоить ей значение нельзя.
Константу можно объявить в процедуре или в разделе объявлений в начале модуля. Константы уровня модуля по умолчанию являются частными. Чтобы объявить общедоступную константу уровня модуля, перед оператором Constследует использовать ключевое словоPublic. Чтобы явно объявить частную константу для большей понятности кода, укажите перед оператором Const ключевое слово Private. Дополнительные сведения см. в разделе Общие сведения о области и видимости.
В следующем примере константа conAge Public объявляется как целое число и присваивается ей значение 34 .
Константы можно объявить как один из следующих типов данных: логическое, байтовое, целое число, Long, Currency, Single, Double, Date, String или Variant. Поскольку значение константы известно заранее, вы можете указать тип данных для оператора Const.
В одном операторе можно объявлять несколько констант. Чтобы задать тип данных, необходимо указать тип каждой константы.
В следующей инструкции константы conAge и conWage объявляются как integer.
См. также
Поддержка и обратная связь
Есть вопросы или отзывы, касающиеся Office VBA или этой статьи? Руководство по другим способам получения поддержки и отправки отзывов см. в статье Поддержка Office VBA и обратная связь.
Источник
Оператор Const
Объявляет константы для использования вместо значений литералов.
Синтаксис
[ Общедоступная | Приватный ] Constname [ Astype ] =expression
Синтаксис оператора Const состоит из следующих частей:
Part | Описание |
---|---|
Public | Необязательный параметр. Ключевое слово , используемое на уровне модуля для объявления констант, доступных для всех процедур во всех модулях. Не допускается использовать в процедурах. |
Private | Необязательный параметр. Ключевое слово, используемое на уровне модуля для объявления констант, доступных только в модуле, в котором делается объявление . Не допускается использовать в процедурах. |
constname | Обязательно. Имя константы; соответствует стандартным соглашениям по именованию переменных. |
type | Необязательный параметр. Тип данных константы; может принимать значение Byte, Boolean, Integer, Long, Currency, Single, Double, Decimal (в настоящее время не поддерживается), Date, String или Variant. Используйте отдельное предложение типаAs для каждой объявленной константы. |
выражение | Обязательно. Литерал, другая константа или любая комбинация, содержащая все арифметические или логические операторы за исключением Is. |
Замечания
Константы являются частными по умолчанию. Внутри процедур константы всегда являются частными; их видимость невозможно изменить. В стандартных модулях видимость констант уровня модуля по умолчанию можно изменить с помощью ключевого слова Public . Однако в модулях класса константы могут быть только частными, и их видимость нельзя изменить с помощью ключевого слова Public .
Чтобы объединить несколько объявлений констант в одной строке, отделяйте назначение каждой константы запятой. Когда объявления констант объединяются таким способом, ключевое слово Public или Private, если используется, применяется ко всем константам.
Не допускается использовать переменные, определяемые пользователем функции и внутренние функции Visual Basic (например, Chr) в выражениях, назначаемых константам.
Константы позволяют сделать программы самодокументирующимися и облегчают последующие изменения кода. В отличие от переменных константы невозможно ненамеренно изменить во время выполнения программы.
Если явно не объявить тип константы с помощью типаAs, константы имеют тип данных, наиболее подходящий для выражения.
Константы, объявленные в процедуре Sub, Function или Property , являются локальными для этой процедуры. Константа, объявляемая за пределами процедуры, определяется в модуле, в котором она объявляется. Используйте константы в любом месте, где можно использовать выражение.
Пример
В этом примере оператор Const применяется, чтобы объявить константы для использования вместо значений литералов. Константы Public объявляются в разделе General стандартного модуля, а не в модуле класса. Константы Private объявляются в разделе General модуля любого типа.
См. также
Поддержка и обратная связь
Есть вопросы или отзывы, касающиеся Office VBA или этой статьи? Руководство по другим способам получения поддержки и отправки отзывов см. в статье Поддержка Office VBA и обратная связь.
Источник
Использование констант
Код может содержать часто встречающиеся постоянные значения или зависеть от определенных чисел, которые тяжело запоминать, поскольку они не имеют никакого очевидного значения. Вы можете упростить чтение и обслуживание кода с помощью констант. Константа — это значимое имя, которое занимает место неизменяемого числа или строки. Вы не можете изменить константу или присвоить ей новое значение, как в случае с переменной.
Типы констант
Существует три вида констант:
Встроенные константы или системные константы предоставляются приложениями и элементами управления. Другие приложения, предоставляющие библиотеки объектов, такие как Microsoft Access, Excel, Project и Word, также предоставляют список констант, которые можно использовать с их объектами, методами и свойствами. Для отдельных библиотек объектов список констант можно получить из обозревателя объектов.
Константы Visual Basic перечислены в библиотеке типов Visual Basic для приложений и библиотеке объектов доступа к данным (DAO).
Visual Basic распознает константы в приложениях, созданных в более ранних версиях Visual Basic или Visual Basic for Applications. Вы можете обновить константы до тех, которые перечислены в обозревателе объектов. Перечисленные в обозревателе объектов константы не требуют объявления в приложении.
Символические или определяемые пользователем константы объявляются с помощью оператора Const .
Константы условного компилятора объявляются с помощью оператора #Const (директива).
В более ранних версиях Visual Basic при написании имен констант обычно использовались прописные буквы и знаки подчеркивания. Например:
Внутренние константы теперь квалифицированы, чтобы избежать путаницы, если константы с одинаковым именем существуют в нескольких библиотеках объектов, которым могут быть присвоены разные значения. Существует два способа определения имен констант:
- С помощью префикса
- С помощью ссылки на библиотеку
Определение констант по префиксу
Встроенные константы, предоставляемые всеми объектами, имеют формат смешанного регистра и состоящий из двух символов префикс, который указывает на библиотеку объектов, определяющую константу. К именам констант из библиотеки объектов Visual Basic for Applications добавляется префикс «vb», а к именам констант из библиотеки объектов Microsoft Excel — префикс «xl». В следующих примерах продемонстрировано, как изменяются префиксы для пользовательских элементов управления в зависимости от используемой библиотеки типов.
- vbTileHorizontal
- xlDialogBorder
Определение констант по ссылке на библиотеку
Ссылку на константу можно также определить с помощью следующего синтаксиса.
Синтаксис для определения констант включает следующие части:
Part | Описание |
---|---|
libname | Необязательный параметр. Имя библиотеки типов, определяющей константу. Для большинства пользовательских элементов управления (недоступно в Macintosh) он также является именем класса элемента управления. Если вы не помните имя класса элемента управления, наведите на него указатель мыши на панели элементов. Имя класса отобразится в Подсказках. |
имя_модуля | Необязательный параметр. Имя модуля в библиотеке типов, определяющей константу. Вы можете узнать имя модуля с помощью Object Browser (обозревателя объектов). |
constname | Имя, определенное для константы в библиотеке типов. |
См. также
Поддержка и обратная связь
Есть вопросы или отзывы, касающиеся Office VBA или этой статьи? Руководство по другим способам получения поддержки и отправки отзывов см. в статье Поддержка Office VBA и обратная связь.
Источник
Оператор Const (Visual Basic)
Объявляет и определяет одну или несколько констант.
Синтаксис
Компоненты
attributelist
Необязательный элемент. Список атрибутов, которые применяются ко всем константам, объявленным в этой инструкции. См . список атрибутов в угловых скобках (» » и » > «).
accessmodifier
Необязательный элемент. Используйте этот параметр, чтобы указать, какой код может получить доступ к этим константам. Может иметь значение Public, Protected, Friend, Protected Friend, Private или Private Protected.
Shadows
Необязательный элемент. Используйте его, чтобы повторно объявить и скрыть программный элемент в базовом классе. См . раздел Тени.
constantlist
Обязательный. Список констант, объявляемых в этой инструкции.
Каждый элемент constant имеет перечисленные ниже синтаксис и компоненты.
constantname [ As datatype ] = initializer
Часть | Описание |
---|---|
constantname | Обязательный. Имя константы. См. раздел Declared Element Names. |
datatype | Требуется, если Option Strict имеет значение On . Тип данных константы. |
initializer | Обязательный элемент. Выражение, которое вычисляется во время компиляции и присваивается константе. |
Комментарии
Если у вас есть значение, которое никогда не изменяется в приложении, можно определить именованную константу и использовать ее вместо литерального значения. Имя легче запомнить, чем значение. Вы можете определить константу только один раз и использовать ее во многих местах в коде. Если в более поздней версии потребуется переопределить значение, Const необходимо внести изменения только в оператор .
Можно использовать Const только на уровне модуля или процедуры. Это означает, что контекст объявления переменной должен быть классом, структурой, модулем, процедурой или блоком и не может быть исходным файлом, пространством имен или интерфейсом. Дополнительные сведения см. в разделе Контексты объявления и уровни доступа по умолчанию.
Локальные константы (внутри процедуры) по умолчанию используют общий доступ, и для них нельзя использовать модификаторы доступа. Константы членов класса и модуля (вне любой процедуры) по умолчанию — закрытый доступ, а константы элементов структуры — общедоступный доступ. Уровни доступа можно настроить с помощью модификаторов доступа.
Правила
Контекст объявления. Константой, объявленной на уровне модуля вне любой процедуры, является константой-членом; он является членом класса, структуры или модуля, который объявляет его.
Константой, объявленной на уровне процедуры, является локальной константой; Он является локальным для процедуры или блока, который объявляет его.
Атрибуты. Атрибуты можно применять только к константам-членам, но не к локальным константам. Атрибут вносит сведения в метаданные сборки, которые не имеют значения для временного хранилища, например локальных констант.
Модификаторы. По умолчанию все константы : Shared , Static и ReadOnly . При объявлении константы нельзя использовать ни одно из этих ключевых слов.
На уровне процедуры нельзя использовать Shadows модификаторы доступа или для объявления локальных констант.
Несколько констант. В одном операторе объявления можно объявить несколько констант, указав constantname часть для каждой из них. Несколько констант разделяются запятыми.
Правила типов данных
Типы данных. Оператор Const может объявлять тип данных переменной. Можно указать любой тип данных или имя перечисления.
Тип по умолчанию. Если не указать datatype , константа принимает тип initializer данных . Если указать и datatype initializer , тип initializer данных должен быть преобразован в datatype . Если ни datatype , ни initializer нет, тип данных по умолчанию имеет значение Object .
Различные типы. Для разных констант можно указать разные типы данных, используя отдельное As предложение для каждой объявленной переменной. Однако нельзя объявить несколько констант одного типа с помощью общего As предложения.
Инициализация. Необходимо инициализировать значение каждой константы в constantlist . Используется для initializer предоставления выражения, назначаемого константе. Выражение может быть любым сочетанием литералов, других констант, которые уже определены, и элементов перечисления, которые уже определены. Для объединения таких элементов можно использовать арифметические и логические операторы.
Нельзя использовать переменные или функции в initializer . Однако можно использовать ключевые слова преобразования, такие как CByte и CShort . Можно также использовать AscW , если вызвать его с константой String или Char аргументом, так как это можно вычислить во время компиляции.
Поведение
Область. Локальные константы доступны только из процедуры или блока. Константы-члены доступны из любого места в классе, структуре или модуле.
Квалификации. Код за пределами класса, структуры или модуля должен квалифицировать имя константы-члена именем этого класса, структуры или модуля. Код за пределами процедуры или блока не может ссылаться ни на какие локальные константы внутри этой процедуры или блока.
Пример 1
В следующем примере оператор используется Const для объявления констант для использования вместо литеральных значений.
Пример 2
При определении константы с типом Object данных компилятор Visual Basic присваивает ей тип initializer , а не Object . В следующем примере константе naturalLogBase задан тип Decimal среды выполнения .
В предыдущем примере используется ToString метод объекта , Type возвращаемого оператором GetType, так как Type не может быть преобразован в String с помощью CStr .
Источник