Справочная таблица по встроенным типам данных VBA Excel. Функция TypeName, возвращающая тип данных переменной. Оператор Option Explicit в начале модуля.
Встроенные типы данных
Встроенные типы данных VBA Excel:
Тип данных | Байты* | Диапазон значений |
---|---|---|
Byte | 1 | Целые числа: от 0 до 255 |
Boolean | 2 | True (Истина) или False (Ложь) |
Integer | 2 | Целые числа: от -32768 до 32767 |
Long | 4 | Целые числа: от -2147483648 до 2147483647 |
Single | 4 | Отрицательные числа: от -3,402823Е+38 до -1,401298Е-45 Положительные числа: от 1,401298Е-45 до 3,402823Е+38 |
Double | 8 | Отрицательные числа: от -1,79769313486232Е+308 до -4,94065645841247Е-324 Положительные числа: от 4,94065645841247Е-324 до 1,79769313486232Е+308 |
Currency | 8 | от -922337203685477,5808 до 922337203685477,5807 |
Date | 8 | с 1 января 100 года по 31 декабря 9999 года |
Object | 4 | Ссылка на объект |
String (переменной длины) |
10 + длина строки | от 0 до ≈2 млрд символов |
String (фиксированной длины) |
длина строки | от 1 до ≈65400 символов |
Variant (числа) |
16 | В пределах диапазона типа данных Double |
Variant (символы) |
22 + длина строки | от 0 до ≈2 млрд символов |
Дополнительно для VBA7:
Тип данных | Байты* | Диапазон значений |
---|---|---|
LongLong | 8 | Целые числа: от –9 223 372 036 854 775 808 до 9 223 372 036 854 775 807 Доступен только в 64-разрядных системах. |
LongPtr | 4 или 8 | В 32-разрядных системах соответствует типу Long: от -2147483648 до 2147483647, в 64-разрядных — типу LongLong: от –9 223 372 036 854 775 808 до 9 223 372 036 854 775 807 |
*Резервируется память в байтах на каждую переменную соответствующего типа.
Тип данных Variant может принимать специальные значения: Empty, Error, Nothing и Null.
Кроме встроенных типов данных VBA Excel позволяет использовать пользовательские типы, создаваемые с помощью оператора Type. Диапазон значений пользовательского типа данных определяется встроенными типами, из которых он состоит.
Переменные с типами данных Byte, Boolean, Integer, Long, Single и Double можно объявлять с помощью суффиксов.
Функция TypeName
TypeName – это функция, возвращающая значение типа String с информацией о переменной.
Чаще всего, функция TypeName возвращает наименование типа данных аргумента (значения), содержащегося в переменной. Кроме наименований встроенных типов данных, функция TypeName может возвращать следующие значения:
Значение | Описание |
---|---|
Collection, Dictionary, Range, Worksheet и т.д. | Тип известного объекта, ссылка на который содержится в объектной переменной |
Error | Переменная содержит значение ошибки |
Empty | Неинициализированное значение |
Null | Отсутствие допустимых данных |
Unknown | Объект, тип которого неизвестен |
Nothing | Объектная переменная, которая не ссылается на объект |
Если переменная объявлена с числовым типом данных или String, функция TypeName возвратит наименование этого типа данных. Если переменная объявлена с типом данных Variant или Object, возвращаемое значение будет зависеть от содержимого переменной.
Пример:
Sub Primer() Dim a As Single, b As Date, c As Variant MsgBox «a As Single: « & TypeName(a) ‘Single MsgBox «b As Date: « & TypeName(b) ‘Date MsgBox «c As Variant: « & TypeName(c) ‘Empty (значение не инициализировано) c = 1.236 MsgBox «c = 1.236: « & TypeName(c) ‘Double Set c = Cells(1, 1) MsgBox «Set c = Cells(1, 1): « & TypeName(c) ‘Range (тип объекта) Set c = Worksheets(1) MsgBox «Set c = Worksheets(1): « & TypeName(c) ‘Worksheet (тип объекта) End Sub |
Оператор Option Explicit
VBA Excel допускает использование в коде как объявленных, так и необъявленных переменных. Необъявленным переменным присваивается тип данных Variant и они могут принимать все допустимые значения, свойственные этому типу.
Если при написании кода допустить ошибку в имени ранее использовавшейся переменной, компилятор зарегистрирует ее как новую. Это вызовет ошибки в работе программы, причину которых (ошибку в имени переменной) трудно обнаружить при отладке.
Чтобы избежать ошибок при работе с переменными используется оператор Option Explicit. Он указывает на то, что все переменные в модуле должны быть объявлены с помощью ключевого слова Dim или ReDim. В этом случае, если компилятор обнаружит строку с необъявленной переменной, то сгенерирует ошибку и выделит эту переменную.
Размещается оператор Option Explicit в самом начале модуля перед всеми остальными операторами. Чтобы каждый раз не вставлять его вручную и, тем более, не забыть о нем, можно настроить редактор VBA Excel, чтобы он автоматически добавлял Option Explicit при создании нового модуля.
Настройка автоматического добавления Option Explicit
1. Откройте окно Options через вкладку меню Tools:
2. Отметьте галочкой опцию Require Variable Declaration на вкладке Editor:
3. Теперь новый модуль открывается со строкой Option Explicit:
In this Article
- Double Variable Type
- Single Data Type
- Int or Long Data Types
- Declare Double Variable at Module or Global Level
- Module Level
- Global Level
- Format Double Stored as String
Double Variable Type
The VBA Double data type is used to store numbers that require decimal places. It can store from -1.79769313486231E308 to -4.94065645841247E-324 for negative values, and 4.94065645841247E-324 to 1.79769313486232E308 for positive values.
To declare an Double variable, you use the Dim Statement (short for Dimension):
Dim dblA as Double
Then, to assign a value to a variable, simply use the equal sign:
dlbA = 3658.25
Putting this in a procedure looks like this:
Sub dblExample()
'declare the double variable
Dim dblA as Double
'populate the double variable
dblA = 3658.25
'show the message box
MsgBox dblA
End Sub
If you run the code above, the following message box will be shown.
Single Data Type
The Single data type is just a shorter version of the Double data type. Due to this fact, it can effect the rounding when used in a procedure as the single data type will round to 4 decimal places, while the Double data Type will round to 12 decimal places. If you do not need the Double data type, you can use the Single data type
Int or Long Data Types
If you do not need a decimal place, you can use either the Int data type or the Long data type.
Dim intA as Integer
Dim lngB as Long
Declare Double Variable at Module or Global Level
In the previous examples, we’ve declared the Double variable within a procedure. Variables declared with a procedure can only be used within that procedure.
Instead, you can declare Double variables at the module or global level.
Module Level
Module level variables are declared at the top of code modules with the Dim statement.
These variables can be used with any procedure in that code module.
Global Level
Global level variables are also declare at the top of code modules. However, instead of using the Dim statement, use the Public statement to indicate that the Double variable is available to be used throughout your VBA Project.
Public DblA as Double
If you were to declare the double variable at a module level and then try to use it in a different module, an error would occur.
However, if you had used the Public keyword to declare the double variable, the error would not occur and the procedure would run perfectly.
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
Format Double Stored as String
There may be a time where you wish to format a double data type to a string – for example you might want to display a currency symbol and round the number to 2 decimal places.
To achieve this, you use the Format function.
The following procedure
Sub TestDoubleToCurrencyString()
'declare the string variable
Dim strMoney As String
'declare the double and populate the value
Dim dblValue As Double
dblValue = 44055.256
'convert the double to a string with a currency symbol with 2 decimal places
strMoney = Format(dblValue , "$#,##0.00")
'view the result
MsgBox strMoney
End Sub
would return this result:
Similarly, you may want to display a number as a formatted phone number.
This procedure:
Sub TestDoubleToPhone()
'declare the string variable
Dim strPhone As String
'declare the double and populate the value
Dim dblValue As Double
dblValue = 555968541
'convert the double to a string with a currency symbol
strPhone = Format(dblValue, "(000)-000 0000")
'view the result
MsgBox strPhone
End Sub
would return this result:
Содержание
- Тип данных Double (Visual Basic)
- Remarks
- Советы по программированию
- VBA Двухместный — Объявление переменных с использованием двойного типа данных в Excel VBA
- Excel VBA двойной тип данных
- Как использовать двойной тип данных VBA в Excel?
- VBA Double — Пример # 1
- VBA Double — Пример № 2
- Плюсы и минусы VBA Double
- То, что нужно запомнить
- Рекомендуемые статьи
- VBA Excel. Типы данных
- Встроенные типы данных
- Функция TypeName
Тип данных Double (Visual Basic)
Содержит числа с плавающей запятой с двойной точностью со знаком IEEE 64-разрядной (8-байтовой) с плавающей запятой, которые варьируются от -1,79769313486231570E+308 до -4.94065645841246544E-324 для отрицательных значений и от 4,94065645841246544E-324 до 1,79769313486231570E+308 для положительных значений. Числа двойной точности хранят приближение реального числа.
Тип Double данных предоставляет наибольшее и наименьшее возможные величины для числа.
Значение по умолчанию для типа Double — 0.
Советы по программированию
Точность. При работе с числами с плавающей запятой помните, что они не всегда имеют точное представление в памяти. Это может привести к непредвиденным результатам определенных операций, таких как сравнение значений Mod и оператор. Дополнительные сведения см. в разделе «Устранение неполадок типов данных».
Конечные нули. Типы данных с плавающей запятой не имеют внутреннего представления конечных нулевых символов. Например, они не различают 4.2000 и 4.2. Следовательно, конечные нулевые символы не отображаются при отображении или печати значений с плавающей запятой.
Символы типов. При добавлении к литералу символа типа литерала R производится принудительное приведение литерала к типу данных Double . Например, если за целочисленным значением R следует, значение изменяется на Double .
При добавлении символа идентификатора типа # к любому идентификатору производится принудительное приведение этого идентификатора к типу Double . В следующем примере переменная num вводится в виде: Double
Источник
VBA Двухместный — Объявление переменных с использованием двойного типа данных в Excel VBA
Excel VBA двойной тип данных
В VBA у нас есть различные типы типов данных, которые используются в соответствии с потребностями. Например, тип данных Integer используется для чисел, тип данных String используется для алфавитов и текста, а тип данных Long используется, когда нам нужно использовать числа или текст без каких-либо ограничений. Точно так же у нас есть тип данных Double, который используется для десятичных чисел. Хотя мы можем использовать Single для десятичных чисел, но при этом будут сохранены только значения до 2 точек после запятой. Если мы хотим использовать десятичные значения без каких-либо ограничений, то для этого у нас есть тип данных Double.
Если мы используем Integer вместо типа данных Double для десятичных значений, тогда он преобразует десятичное значение в ближайшие целые числа. Кроме того, есть некоторые ограничения на использование типа данных Double. Double может принимать отрицательные значения от -1, 79769313486231E308 до -4, 94065645841247E324, а для положительных значений — от 4, 94065645841247E-324 до 1, 77969693486232E308. Помимо этого, значение не может быть принято.
Как использовать двойной тип данных VBA в Excel?
Ниже приведены различные примеры использования двойного типа данных в Excel VBA.
Вы можете скачать этот шаблон VBA Double Excel здесь — Шаблон VBA Double Excel
VBA Double — Пример # 1
В этом примере мы увидим, как разные типы данных, такие как Integer и Single, дают выходные данные для любого десятичного значения, а с другой стороны, как тип данных Double дает выходные данные с одним и тем же десятичным значением. Для этого выполните следующие шаги:
Шаг 1. Откройте модуль на вкладке меню «Вставка».
Шаг 2: Напишите подпроцедуру для VBA Double. Мы можем выбрать любое другое имя для определения имени VBA Double согласно нашему выбору.
Код:
Шаг 3: Теперь определите переменную, скажем, это будет целое число A, как показано ниже.
Код:
Шаг 4: Назначьте десятичное значение для определенной переменной. Предположим, что десятичное значение равно 1.23456789, как показано ниже.
Код:
Шаг 5: Теперь нам нужна платформа, где мы можем увидеть результат. Здесь мы можем использовать функцию Msgbox или Debug.Print. Мы будем использовать Msgbox, который является наиболее традиционным способом.
Код:
Шаг 6: Запустите его, нажав на кнопку Play или нажав клавишу F5.
Мы увидим окно вывода сообщения со значением «1». Это означает, что тип данных Integer преобразовал десятичное значение в ближайшее целое число как 1.
Шаг 7: Теперь давайте изменим тип данных с Integer на Single и посмотрим, какой тип данных нам вернет.
Код:
Шаг 8: Снова запустите код, нажав кнопку Play или нажав клавишу F5.
Мы увидим, что тип данных Single вернул десятичное значение, равное 1 . 234568, тогда как мы ввели входное значение как 1, 23456789 .
Это означает, что тип данных Single преобразует введенное десятичное значение в ближайшее возможное десятичное значение путем преобразования последней цифры в ближайшее значение, которое должно быть меньше 5.
Шаг 9: Теперь мы будем использовать тип данных Double вместо Single и посмотрим, какой вывод мы получим.
Код:
Шаг 10: Снова запустите код, нажав кнопку Play или нажав клавишу F5.
Мы увидим, что окно сообщения имеет точно такое же значение, которое мы указали, что означает, что Double не преобразовал входное значение, если оно падает ниже своего предела.
VBA Double — Пример № 2
В этом примере мы будем использовать ссылки на ячейки. И мы начнем работать так же, как мы видели в примере-1. Для этого у нас есть некоторые данные в столбце A в виде десятичных разрядов.
Выполните следующие шаги:
Шаг 1: Запишите подпроцедуру VBA Double, как показано ниже.
Код:
Шаг 2: Сначала мы начнем с Integer. Поэтому определите переменную как Integer, как показано ниже. Это будет наша входная переменная.
Код:
Шаг 3: После этого мы снова определим переменную как целое число. Это переменная, в которой мы будем хранить выходные данные.
Код:
Шаг 4: Откройте цикл For-Next, как показано ниже. Здесь мы напишем условие для получения данных из столбца в другой столбец.
Код:
Шаг 5: Выберите диапазон ячеек в переменной А. Здесь наши данные от ячейки А1 до А10.
Код:
Шаг 6: Теперь выберите значения ячеек, которые мы хотим разместить. Здесь значения ячеек находятся в первом столбце.
Код:
Шаг 7: Теперь мы поместим выбранные значения в столбец 2, который является B в определенной переменной Deci .
Код:
Шаг 8: Запустите код, нажав на кнопку Play или нажав клавишу F5.
Поскольку мы выбрали тип данных Integer для выходной переменной Deci, он преобразовал десятичные числа в целые числа в столбце B.
Шаг 9: Давайте изменим тип данных Deci, который является выходной переменной, с Integer на Single, как показано ниже.
Код:
Шаг 10: Запустите код, нажав на кнопку Play или нажав клавишу F5. Мы увидим, что десятичные числа из столбца A были преобразованы в наилучшие возможные десятичные числа.
Шаг 11: Давайте изменим тип данных выходной переменной с Single на Double . И посмотрим, что мы получим в столбце Б.
Код:
Шаг 12: Снова запустите код, нажав кнопку Play или нажав клавишу F5. Вот как работает VBA Double .
Плюсы и минусы VBA Double
- VBA Double преобразует одно и то же число в десятичные числа в определенном диапазоне.
- Это довольно просто в использовании.
- Мы можем использовать тип данных Double вместо Integer или Single аналогичным образом.
- Он не учитывает десятичное число, превышающее предел, который мы видели в приведенном выше разделе введения.
То, что нужно запомнить
- Предел использования VBA Double для отрицательных значений составляет от -1, 79769313486231E308 до -4, 94065645841247E324, а для положительных значений — от 94065645841247E-324 до 1, 779769313486232E308.
- VBA Double может содержать до 14-значных значений, если он находится ниже указанного предела.
- VBA Double использует 8 байт системной памяти для каждого используемого типа.
Рекомендуемые статьи
Это руководство по Excel VBA Double. Здесь мы обсудим, как использовать двойные типы данных в Excel VBA вместе с практическими примерами и загружаемым шаблоном Excel. Вы также можете просмотреть наши другие предлагаемые статьи —
- VBA Randomize (Примеры с шаблоном Excel)
- Как переименовать лист в VBA?
- Как использовать VBA ReDim Statement?
- VBA переменная декларация | Шаблон Excel
- VBA Environ
Источник
VBA Excel. Типы данных
Справочная таблица по встроенным типам данных VBA Excel. Функция TypeName, возвращающая тип данных переменной. Оператор Option Explicit в начале модуля.
Встроенные типы данных
Встроенные типы данных VBA Excel:
Тип данных | Байты* | Диапазон значений |
---|---|---|
Byte | 1 | Целые числа: от 0 до 255 |
Boolean | 2 | True (Истина) или False (Ложь) |
Integer | 2 | Целые числа: от -32768 до 32767 |
Long | 4 | Целые числа: от -2147483648 до 2147483647 |
Single | 4 | Отрицательные числа: от -3,402823Е+38 до -1,401298Е-45 Положительные числа: от 1,401298Е-45 до 3,402823Е+38 |
Double | 8 | Отрицательные числа: от -1,79769313486232Е+308 до -4,94065645841247Е-324 Положительные числа: от 4,94065645841247Е-324 до 1,79769313486232Е+308 |
Currency | 8 | от -922337203685477,5808 до 922337203685477,5807 |
Date | 8 | с 1 января 100 года по 31 декабря 9999 года |
Object | 4 | Ссылка на объект |
String (переменной длины) |
10 + длина строки | от 0 до ≈2 млрд символов |
String (фиксированной длины) |
длина строки | от 1 до ≈65400 символов |
Variant (числа) |
16 | В пределах диапазона типа данных Double |
Variant (символы) |
22 + длина строки | от 0 до ≈2 млрд символов |
Дополнительно для VBA7:
Тип данных | Байты* | Диапазон значений |
---|---|---|
LongLong | 8 | Целые числа: от –9 223 372 036 854 775 808 до 9 223 372 036 854 775 807 Доступен только в 64-разрядных системах. |
LongPtr | 4 или 8 | В 32-разрядных системах соответствует типу Long: от -2147483648 до 2147483647, в 64-разрядных — типу LongLong: от –9 223 372 036 854 775 808 до 9 223 372 036 854 775 807 |
*Резервируется память в байтах на каждую переменную соответствующего типа.
Тип данных Variant может принимать специальные значения: Empty, Error, Nothing и Null.
Кроме встроенных типов данных VBA Excel позволяет использовать пользовательские типы, создаваемые с помощью оператора Type. Диапазон значений пользовательского типа данных определяется встроенными типами, из которых он состоит.
Переменные с типами данных Byte, Boolean, Integer, Long, Single и Double можно объявлять с помощью суффиксов.
Функция TypeName
Чаще всего, функция TypeName возвращает наименование типа данных аргумента (значения), содержащегося в переменной. Кроме наименований встроенных типов данных, функция TypeName может возвращать следующие значения:
Значение | Описание |
---|---|
Collection, Dictionary, Range, Worksheet и т.д. | Тип известного объекта, ссылка на который содержится в объектной переменной |
Error | Переменная содержит значение ошибки |
Empty | Неинициализированное значение |
Null | Отсутствие допустимых данных |
Unknown | Объект, тип которого неизвестен |
Nothing | Объектная переменная, которая не ссылается на объект |
Если переменная объявлена с числовым типом данных или String, функция TypeName возвратит наименование этого типа данных. Если переменная объявлена с типом данных Variant или Object, возвращаемое значение будет зависеть от содержимого переменной.
Источник
Excel VBA Double Data Type
VBA Double is a data type we assign to declare variables, an improved or longer version of the “Single” data type variable. One can usually use it to store longer decimal places.
VBA IntegerIn VBA, an integer is a data type that may be assigned to any variable and used to hold integer values. In VBA, the bracket for the maximum number of integer variables that can be kept is similar to that in other languages. Using the DIM statement, any variable can be defined as an integer variable.read more
data type always converts decimal values to the nearest integer value. The single data type can show up to two digits of decimal places. On the other hand “Double” data type can store values from -1.79769313486231E308 to -4.94065645841247E324 for negative values and for positive numbers it can store values from 4.94065645841247E-324 to 1.79769313486232E308.
More importantly, it consumes 8 bytes of memory.
Table of contents
- Excel VBA Double Data Type
- Examples to use VBA Double Data Type
- Example #1
- Example #2
- Things to Remember
- Recommended Articles
- Examples to use VBA Double Data Type
You are free to use this image on your website, templates, etc, Please provide us with an attribution linkArticle Link to be Hyperlinked
For eg:
Source: VBA Double (wallstreetmojo.com)
Examples to use VBA Double Data Type
You can download this VBA Double Excel Template here – VBA Double Excel Template
Example #1
Before we see the example of the Double data type, let us look at the example codes of “Integer” and “Single” data types in VBA. First, look at the VBA codeVBA code refers to a set of instructions written by the user in the Visual Basic Applications programming language on a Visual Basic Editor (VBE) to perform a specific task.read more below.
Code:
Sub Integer_Ex() Dim k As Integer k = 2.569999947164 MsgBox k End Sub
We have declared the variable “k” as Integer. For this variable, we have assigned the value as 2.569999947164.
Let us run this code manually or use excel shortcut keyAn Excel shortcut is a technique of performing a manual task in a quicker way.read more F5 to see the final value in the message box in VBAVBA MsgBox function is an output function which displays the generalized message provided by the developer. This statement has no arguments and the personalized messages in this function are written under the double quotes while for the values the variable reference is provided.read more.
The result is showing as 3 instead of the supplied number of 2.569999947164. The reason is VBA has converted the number to the nearest integer value, i.e., 3.
When the decimal value is more than 0.5, it will convert to the next integer value, and when the decimal value is less than 0.51, it will convert to the below Integer value.
Now, we will change the data type from Integer to Single.
Code:
Sub Integer_Ex() Dim k As Single k = 2.569999947164 MsgBox k End Sub
Run the code through shortcut key F5, and see what number we get this time.
This time we got the result of 2.57, so we got two decimal places. The original value we have assigned was 2.569999947164, so in this case, third, the placed decimal value is 9, so since this is more than 5, it has converted the second place decimal value 6 to 7.
Now, change the data type from Single to Double.
Code:
Sub Integer_Ex() Dim k As Double k = 2.569999947164 MsgBox k End Sub
Now, run the code manually and see how many digits we get in the message box result.
This time we got all the decimal values. So, we can supply up to 14 digits of decimal places under the Double data type.
Suppose you supply any value greater than 14 decimal positions that it will convert to the nearest value. For example, look at the below image.
We have typed 15 decimal places instead of 14. If we press the “Enter” key, it will be back to 14 digits only.
Instead of 59 (last two digits), we got 6, i.e., since the last digit is 9, which is greater than the last number 5, 5 is converted to the next integer value, i.e., 6.
Example #2
Now we will show how to work with cell referenceCell reference in excel is referring the other cells to a cell to use its values or properties. For instance, if we have data in cell A2 and want to use that in cell A1, use =A2 in cell A1, and this will copy the A2 value in A1.read more in a worksheet. Below are the numbers we have entered in the worksheet.
Let us capture the same values next by using INTEGER data type, SINGLE data type, and DOUBLE type.
Below is the code to retain values from columns A to B using the INTEGER data type.
Code:
Sub Double_Ex() Dim k As Integer Dim CellValue As Integer For k = 1 To 6 CellValue = Cells(k, 1).Value Cells(k, 2).Value = CellValue Next k End Sub
Let us run the code through shortcut key F5 to see what values we get in column B.
When we used Integer as data type, we got all the whole numbers, i.e., without decimals.
Now, we will change the VBA data typeData type is the core character of any variable, it represents what is the type of value we can store in the variable and what is the limit or the range of values which can be stored in the variable, data types are built-in VBA and user or developer needs to be aware which type of value can be stored in which data type. Data types assign to variables tells the compiler storage size of the variable.read more of a variable from Integer to Single.
Code:
Sub Double_Ex() Dim k As Integer Dim CellValue As Single For k = 1 To 6 CellValue = Cells(k, 1).Value Cells(k, 2).Value = CellValue Next k End Sub
This code will give the below result.
This time we got only two decimal places.
Now, change the data type from Single to Double.
Code:
Sub Double_Ex() Dim k As Integer Dim CellValue As Double For k = 1 To 6 CellValue = Cells(k, 1).Value Cells(k, 2).Value = CellValue Next k End Sub
It will return the below result.
We have got exact values from column A.
Things to Remember
- Double is an improved data type of Single data type.
- It can hold up to 14 decimal places.
- It consumes 8 bytes of system memory.
Recommended Articles
This article has been a guide to VBA Double. Here, we discuss using and declaring the VBA Double data type to store longer decimal places, along with practical examples and a downloadable Excel template. Below you can find some useful Excel VBA articles: –
- VBA Long Data Type
- VBA Variant Data Type
- Variable Declaration in VBA
- VBA DATEVALUE
Excel VBA Double Data Type
In VBA, we have different types of data types that are used as per the need. Like, Integer data type is used for numbers, the String data type is used for alphabets and text and a Long data type is used when we need to use numbers or text without any limit. Similarly, we have a Double data type that is used for decimal numbers. Although, we can use Single for decimals but this will retain only values to 2 points of the decimal. If we want to use decimal values without any limit then we have a Double data type for this.
If we use Integer instead of Double data type for decimal values then it will convert the decimal value into the nearest whole number integers. And also, there is some limit of using Double data type as well. Double can accommodate negative values from -1.79769313486231E308 to -4.94065645841247E324 and for positive values from 4.94065645841247E-324 to 1.79769313486232E308. Beyond this, the value cannot be accepted.
How to Use VBA Double Data Type in Excel?
Below are the different examples to use Double Data Type in Excel VBA.
You can download this VBA Double Excel Template here – VBA Double Excel Template
VBA Double – Example #1
In this example we will see, how different data types such as Integers and Single give the output for any decimal value and on the other hand how Double data type gives the output of the same decimal value. For this, follow the below steps:
Step 1: Open a Module from the Insert menu tab.
Step 2: Write the subprocedure for VBA Double. We can choose any other name for defining the name of VBA Double as per our choice.
Code:
Sub VBA_Double() End Sub
Step 3: Now define a variable, let’s say it be A as Integer as shown below.
Code:
Sub VBA_Double() Dim A As Integer End Sub
Step 4: Assign a decimal value to the defined variable. Let’s say that the decimal value is 1.23456789 as shown below.
Code:
Sub VBA_Double() Dim A As Integer A = 1.23456789 End Sub
Step 5: Now we need a platform where we can see the output. Here, we can use Msgbox or Debug.Print function. We will use Msgbox which is the most traditional way of doing.
Code:
Sub VBA_Double() Dim A As Integer A = 1.23456789 MsgBox A End Sub
Step 6: Run it by clicking on the Play button or by pressing the F5 key.
We will see, the output message box with value “1”. This means the Integer data type has converted the decimal value to the nearest whole number as 1.
Step 7: Now let’s change the data type from Integer to Single and see what Single data type will return us.
Code:
Sub VBA_Double() Dim A As Single A = 1.23456789 MsgBox A End Sub
Step 8: Again run the code by clicking on the Play button or by pressing the F5 key.
We will see, the Single data type has returned the decimal value which is 1.234568 whereas we fed the input value as 1.23456789.
This means, the data type Single converts the fed decimal value into the nearest possible decimal value by last digit number conversion to nearest value which should be less than 5.
Step 9: Now we will use data type Double in place of Single and see what output we would get.
Code:
Sub VBA_Double() Dim A As Double A = 1.23456789 MsgBox A End Sub
Step 10: Again run the code by clicking on the Play button or by pressing the F5 key.
We will see, the message box has exactly the same value which we fed which means Double didn’t convert the input value if it falls under its limit.
VBA Double – Example #2
In this example, we will use cell references. And we will start working in the same way as we have seen in example-1. For this, we have some data in column A in multiple-digit of decimals.
Follow the below steps:
Step 1: Write the subprocedure of VBA Double as shown below.
Code:
Sub VBA_Double2() End Sub
Step 2: First, we will start with Integer. So define a variable as Integer as shown below. This would be our input variable.
Code:
Sub VBA_Double2() Dim A As Integer End Sub
Step 3: After that, we will again define a variable as an Integer. This is a variable in which we will store the output.
Code:
Sub VBA_Double2() Dim A As Integer Dim Deci As Integer End Sub
Step 4: Open a For-Next loop as shown below. This is where we will write the condition to get the data from a column to another column.
Code:
Sub VBA_Double2() Dim A As Integer Dim Deci As Integer For Next A End Sub
Step 5: Select the range of cells in variable A. Here, our data is from cell A1 to A10.
Code:
Sub VBA_Double2() Dim A As Integer Dim Deci As Integer For A = 1 To 10 Next A End Sub
Step 6: Now select the cell values which we want to place. Here the cell values are in the first column.
Code:
Sub VBA_Double2() Dim A As Integer Dim Deci As Integer For A = 1 To 10 Deci = Cells(A, 1).Value Next A End Sub
Step 7: Now we will put the selected values into column 2 which is B in defined variable Deci.
Code:
Sub VBA_Double2() Dim A As Integer Dim Deci As Integer For A = 1 To 10 Deci = Cells(A, 1).Value Cells(A, 2).Value = Deci Next A End Sub
Step 8: Run the code by clicking on the Play button or by pressing the F5 key.
As we had selected the Integer data type for output variable Deci, so it converted the decimal numbers into Integer whole numbers in Column B.
Step 9: Let’s change the data type of Deci which is the output variable from Integer to Single as shown below.
Code:
Sub VBA_Double2() Dim A As Integer Dim Deci As Single For A = 1 To 10 Deci = Cells(A, 1).Value Cells(A, 2).Value = Deci Next A End Sub
Step 10: Run the code by clicking on the Play button or by pressing the F5 key. We will see, decimal numbers from column A got converted into best possible closer decimal numbers.
Step 11: Let’s change the output variable data type from Single to Double. And see, what we will get in Column B.
Code:
Sub VBA_Double2() Dim A As Integer Dim Deci As Double For A = 1 To 10 Deci = Cells(A, 1).Value Cells(A, 2).Value = Deci Next A End Sub
Step 12: Again Run the code by clicking on the Play button or by pressing the F5 key. This is how VBA Double works.
Pros & Cons of VBA Double
- VBA Double converts the same number into decimal numbers in a specific range.
- It is quite easy to use.
- We can use Double data type instead of Integer or Single, in a similar way.
- It doesn’t consider the decimal number beyond the limit which we have seen in the above introduction section.
Things to Remember
- Limit of using VBA Double for negative values is from -1.79769313486231E308 to -4.94065645841247E324 and for positive values is from 94065645841247E-324 to 1.79769313486232E308.
- VBA Double can hold up to 14 digit values if it is under the above-given limit.
- VBA Double uses 8 Byte of system memory each type it is used.
Recommended Articles
This is a guide to Excel VBA Double. Here we discuss how to use Double data types in Excel VBA along with practical examples and downloadable excel template. You can also go through our other suggested articles –
- VBA Rename Sheet
- VBA ReDim
- VBA Variable Declaration
- VBA Environ