Целые числа 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 – это функция, возвращающая значение типа 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:

Путь к окну Options

2. Отметьте галочкой опцию Require Variable Declaration на вкладке Editor:

Окно Options

3. Теперь новый модуль открывается со строкой Option Explicit:

Строка Option Explicit вставлена


In this Article

  • Integer (Int) Variable Type
    • Long Variable Type
  • Decimal Values & Int Data Types
    • Decimal / Double Data Type
  • Declare Int Variable at Module or Global Level
    • Module Level
    • Global Level
  • Convert String to Int
  • Convert Int to String
    • Format Integer Stored as String

Integer (Int) Variable Type

The VBA Int data type is used to store whole numbers (no decimal values). However as we’ll see below, the Integer values must fall within the range ‑32768 to 32768.

To declare an Int variable, you use the Dim Statement (short for Dimension):

Dim intA as Integer

Then, to assign a value to a variable, simply use the equal sign:

intA = 30000

Putting this in a procedure looks like this:

Sub IntExample()
'declare the integer
   Dim intA as Integer
'populate the integer
   intA = 30000
'show the message box
   MsgBox intA
End Sub

If you run the code above, the following message box will be shown.

vba integer intexample msgbox

Long Variable Type

As mentioned above, Int variables can only store values between ‑32768 to 32768. If you attempt to assign a value outside that range to an Int variable you’ll receive an error:

vba integer intexample overflow error

When you click on de-bug, the code will break at the ‘populate the integer line as an integer cannot store a number as high as 50000.

vba integer intexample overflow debug

Instead, you can declare a variable with the Long data type:

Dim longA as Long

Long Variables can store very long data types (-2,147,483,648 to 2,147,483,648).

<<link to long variable article>>

Why would you use Int variables instead of Long variables?

Long variables use more memory. Years ago, memory was a big concern when writing code, however now computing technology is much improved and it’s doubtful you’ll encounter memory issues caused by long variables when writing VBA code.

We recommend always using Long variables instead of Int variables. We will continue this tutorial discussing Int variables, but keep in mind that you can use the Long variable type instead.

Decimal Values & Int Data Types

Int variables can not store decimal values. If you pass a decimal number an integer, the decimal number will be rounded to remove the decimal.

Therefore, if you were to run the procedure below:

Sub IntExampleB() 
'declare the integer
   Dim intA as Integer 
'populate the integer 
   intA = 3524.12
'show the message box 
   MsgBox intA 
End Sub

You would get the following result (rounding down):

vba integer passing decimal round down msgbox

However, this code below:

Sub IntExampleB()
 'declare the integer 
   Dim intA as Integer 
'populate the integer 
   intA = 3524.52 
'show the message box 
   MsgBox intA 
End Sub

Would return the following message box (rounding up):

vba integer passing decimal round up msgbox

Decimal / Double Data Type

If you want to store a decimal place, you would need to declare a variable that allows for decimal places.  There are 3 data types that you can use – Single, Double or Currency.

Dim sngPrice as Single
Dim dblPrice as Double
Dim curPrice as Currency

The Single data type will round the decimal point slightly differently to the double and currency data type, so it is preferable to use double to single for accuracy.  A double can have up to 12 decimal places while currency and single can both have up to 4 decimal places.

vba integer double example

For further information about these data types, you can have a look here.

Declare Int Variable at Module or Global Level

In the previous examples, we’ve declared the Int variable within a procedure. Variables declared with a procedure can only be used within that procedure.

vba integer procedure declaration

Instead, you can declare Int variables at the module or global level.

Module Level

Module level variables are declared at the top of code modules with the Dim statement.

vba integer module declaration

These variables can be used with any procedure in that code module.

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!

automacro

Learn More

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 integer variable is available to be used throughout your VBA Project.

Public IntA as Integer

vba integer global declaration

If you were to declare the integer at a module level and then try to use it in a different module, an error would occur.

vba integer declaration notdefined

However, if you had used the Public keyword to declare the integer, the error would not occur and the procedure would run perfectly.

Convert String to Int

There might be an instance or instances when you will need to convert a number stored as a string to an integer value.

vba integer intexample string to integer immediate

You will notice in the immediate window that the integer value goes to the right indicating a number, while the string value goes to the left – indicating text.

Convert Int to String

Conversely, you can convert an integer value to a string.

vba integer intexample integer to string immediate

For further information about these data types, you can have a look here.

VBA Programming | Code Generator does work for you!

Format Integer Stored as String

<<also talk about the Format function, to assign number formatting>>

An integer is a data type in VBA given to any variable to hold integer values. The limitations or the bracket for the number of an integer variable can hold similar in VBA to those of other languages. Using the DIM statement or keyword in VBA, one can define any variable as an integer variable.

Excel VBA Integer

Data types are important in any coding language because all the variable declarations should follow the data type assigned to those variables. We have several data types to work with, and each data type has its advantages and disadvantages associated with it. When declaring variables, it is important to know the particular data type. We dedicate this article to the “Integer” data type in VBA. We will show you the complete picture of the “Integer” data type.

Table of contents
  • Excel VBA Integer
    • What is the Integer Data Type?
    • Examples of Excel VBA Integer Data Type
      • Example #1
      • Example #2
      • Example #3
    • Limitations of Integer Data Type in Excel VBA
    • Recommended Articles

What is the Integer Data Type?

Integers are whole numbers, which could be positive, negative, or zero but not fractional numbers. In the VBA context, “Integer” is a data type we assign to the variables. It is a numerical data type that can hold whole numbers without decimal positions. Integer data type 2 bytes of storage is half the VBA LONGLong is a data type in VBA that is used to store numeric values. We know that integers also store numeric values, but Long differs from integers in that the range for data storage is much larger in the case of long data type.read more data type, i.e., 4 bytes.

VBA Integer

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 Integer (wallstreetmojo.com)

Examples of Excel VBA Integer Data Type

Below are examples of the VBAHere’s a list of the top examples of VBA Macro code in Excel: Print All Sheet Names, Insert Different Color Index in VBA, Insert Worksheets as Much as You want, Insert Blank Row After Every Other Row
Highlight Spelling Mistakes.
read more
Integer Data type.

You can download this VBA Integer Data Type Template here – VBA Integer Data Type Template

Example #1

When we declare a variable, it is necessary to assign a data type, and an integer is one of them, which all the users commonly use based on the requirements.

As we said, an integer can only hold whole numbers, not any fractional numbers. Follow the below steps to see the example of a VBA Integer data type.

Step 1: Declare the variable as Integer.

Code:

Sub Integer_Example()

  Dim k As Integer

End Sub

VBA Integer Example 1

Step 2: Assign the value of 500 to the variable “k.”

Code:

Sub Integer_Example1()

  Dim k As Integer

  k = 500

End Sub

VBA Integer Example 1-1

Step 3: Show the value in the VBA message boxVBA 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.

Code:

Sub Integer_Example1()

  Dim k As Integer

  k = 500

  MsgBox k

End Sub

VBA Integer Example 1-2

When we run the code using the F5 key or manually, we can see 500 in the message box.

VBA Integer Example 1-3

Example #2

Now, we will assign the value -500 to the variable “k.”

Code:

Sub Integer_Example2()

  Dim k As Integer

  k = -500

  MsgBox k

End Sub

VBA Integer Example 2

Run this code manually or press F5. Then, it will also show the value of -500 in the message box.

VBA Integer Example 2-1

Example #3

As we told VBA, the Integer data type can hold only whole numbers, not fraction numbers like 25.655 or 47.145.

However, we will try to assign the fraction number to a VBA Integer data type. For example, look at the below code.

Code:

Sub Integer_Example3()

    Dim k As Integer

    k = 85.456

    MsgBox k

End Sub

Example 3

We have assigned 85.456 to the variable “k.” Next, we will run this 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 to see the result.

VBA Integer Example 3-1

  • It returned the result as 85, even though we assigned the fraction number value since VBA roundsRound function in VBA is a mathematical function that rounds up or down the given number to the specific set of decimal places specified by the user to ease calculation.read more the fraction numbers to the nearest integer.
  • All the fraction numbers less than 0.5 will be rounded down to the nearest integer. For example 2.456 = 2, 45.475 = 45.
  • All the fraction numbers, which are greater than 0.5, will be rounded up to the nearest integer. For example 10.56 = 11, 14.789 = 15.

To look at the roundup integer lets, the value of “k” to 85.58.

Code:

Sub Integer_Example3()

    Dim k As Integer

    k = 85.58

    MsgBox k

End Sub

Example 3-2

When we run this code using the F5 key or manually, it will return 86 because it will round up anything more than 0.5 to the next integer number.

VBA Integer Example 3-3

Limitations of Integer Data Type in Excel VBA

Overflow Error: The Integer data type should work fine if the assigned value is between -32768 and 32767. The moment it crosses the limit on either side, it will cause you an error.

For example, look at the below code.

Code:

Sub Integer_Example4()

    Dim k As Integer

    k = 40000

    MsgBox k

End Sub

Example 4

We have assigned the value of 40000 to the variable “k.”

Since we have complete knowledge of Integer data types, we know it does not work because integer data types cannot hold the value of anything more than 32767.

Let us run the code manually or through the F5 key and see what happens.

VBA Integer Example 4-1

We got the error “Overflow” because the Integer data type cannot hold anything more than 32767 for positive numbers and -32768 for negative numbers.

Type Mismatch Error: Integer data can only hold numerical values between -32768 to 32767. Suppose any number assigned more than these numbers will show an Overflow errorVBA Overflow Error or «Run Time Error 6: Overflow» occurs when the user inserts a value that exceeds the capacity of a specific variable’s data type. Thus, it is an error that results from the overloading of data beyond the desired data type limit of the variable.read more.

Now, we will try to assign text or string values to it. In the below example code, we have assigned the value “Hello.”

Code:

Sub Integer_Example4()

    Dim k As Integer

    k = "Hello"

    MsgBox k

End Sub

Example 4-2

We will run this code through the run option or manually and see what happens.

VBA Integer Example 4-3

It shows the error as “Type mismatch” because we cannot assign a text value to the variable “integer data type.”

Recommended Articles

This article has been a guide to VBA Integer data type in Excel. Here, we discussed using the VBA Integer data type in Excel, its limitations, and the examples and downloadable Excel template.

  • RoundUp in VBA
  • 2 Types of Data Types in VBA
  • VBA Function IsEmpty
  • How to Use Paste Special in VBA?

Целое число — это тип данных в VBA, который присваивается любой переменной для хранения целочисленных значений, ограничения или скобка для количества целочисленных переменных, которые могут удерживаться, аналогичны в VBA, как и в других языках, любая переменная определяется как целое число. переменную с помощью оператора или ключевого слова DIM в VBA.

Excel VBA целое число

Типы данных так важны для любого языка программирования, потому что за всем объявлением переменных должно следовать назначение типа данных этим переменным. У нас есть несколько типов данных, с которыми мы можем работать, и каждый тип данных имеет свои преимущества и недостатки. Когда мы объявляем переменные, важно знать подробности о конкретном типе данных. Эта статья посвящена типу данных «Целое число» в VBA. Мы покажем вам полную картину типа данных «Целое число».

Что такое целочисленный тип данных?

Целые числа — это целые числа, которые могут быть положительными, отрицательными и нулем, но не дробными. В контексте VBA «Целое число» — это тип данных, который мы назначаем переменным. Это числовой тип данных, который может содержать целые числа без десятичных разрядов. Целочисленный тип данных 2 байта памяти, что составляет половину типа данных VBA LONG, то есть 4 байта.

Примеры целочисленного типа данных Excel VBA

Ниже приведены примеры целочисленного типа данных VBA.

Вы можете скачать этот шаблон целочисленного типа данных VBA здесь — Шаблон целочисленного типа данных VBA

Пример # 1

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

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

Шаг 1. Объявите переменную как Integer.

Код:

 Sub Integer_Example () Dim k As Integer End Sub 

Шаг 2: присвоить значение 500 переменной «k».

Код:

 Sub Integer_Example1 () Dim k As Integer k = 500 End Sub 

Шаг 3. Покажите значение в окне сообщения VBA.

Код:

 Sub Integer_Example1 () Dim k As Integer k = 500 MsgBox k End Sub 

Когда мы запускаем код с помощью клавиши F5 или вручную, мы видим 500 в окне сообщения.

Пример # 2

Теперь я присвою значение -500 переменной «k».

Код:

 Sub Integer_Example2 () Dim k As Integer k = -500 MsgBox k End Sub 

Запустите этот код вручную или нажмите F5, тогда он также покажет значение -500 в окне сообщения.

Пример # 3

Как я уже сказал, тип данных VBA Integer может содержать только целые числа, а не дробные числа, такие как 25,655 или 47,145.

Однако я попытаюсь присвоить дробный номер целочисленному типу данных VBA. Для примера посмотрите приведенный ниже код.

Код:

 Sub Integer_Example3 () Dim k As Integer k = 85,456 MsgBox k End Sub 

Я присвоил переменной «k» 85,456. Я запущу этот код VBA, чтобы увидеть, каков результат.

  • Он вернул результат как 85, хотя я присвоил значение дробной части. Это из-за того, что VBA округляет дробные числа до ближайшего целого числа.
  • Все дробные числа меньше 0,5 будут округлены до ближайшего целого числа. Например, 2.456 = 2, 45.475 = 45.
  • Все дробные числа, превышающие 0,5, будут округлены до ближайшего целого числа. Например, 10,56 = 11, 14,789 = 15.

Чтобы еще раз взглянуть на округленное целое число, допустим, что значение «k» равно 85,58.

Код:

 Sub Integer_Example3 () Dim k As Integer k = 85,58 MsgBox k End Sub 

Когда я запускаю этот код с помощью клавиши F5 или вручную, он вернет 86, потому что все, что больше 0,5, будет округлено до следующего целого числа.

Ограничения целочисленного типа данных в Excel VBA

Ошибка переполнения: Целочисленный тип данных должен работать нормально, пока назначенное значение находится в диапазоне от -32768 до 32767. В момент пересечения предела с любой стороны это вызовет ошибку.

Для примера посмотрите приведенный ниже код.

Код:

 Sub Integer_Example4 () Dim k As Integer k = 40000 MsgBox k End Sub 

Я присвоил переменной «k» значение 40000.

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

Давайте запустим код вручную или с помощью клавиши F5 и посмотрим, что произойдет.

Ой !!!

Я получил ошибку «Переполнение», потому что тип данных Integer не может содержать ничего, кроме 32767 для положительных чисел и -32768 для отрицательных чисел.

Ошибка несоответствия типа: Целочисленные данные могут содержать только числовые значения от -32768 до 32767. Если любому числу назначено больше, чем эти числа, будет отображаться ошибка переполнения.

Теперь я попробую присвоить ему текстовые или строковые значения. В приведенном ниже примере кода я присвоил значение «Hello».

Код:

 Sub Integer_Example4 () Dim k As Integer k = "Hello" MsgBox k End Sub 

Я запущу этот код с помощью опции запуска или вручную и посмотрю, что произойдет.

Ошибка отображается как «Несоответствие типа», поскольку мы не можем присвоить текстовое значение переменной «целочисленный тип данных».

Байт

Dim Value As Byte

Байт представляет собой неподписанный 8-битный тип данных. Он может представлять целые числа от 0 до 255, и попытка сохранить значение за пределами этого диапазона приведет к ошибке времени выполнения 6: Overflow . Байт является единственным внутренним беззнаковым типом, доступным в VBA.

Функция кастинга для преобразования в байт — CByte() . Для бросков из типов с плавающей точкой результат округляется до ближайшего целочисленного значения с округлением .5.

Байт-массивы и строки

Строки и байтовые массивы могут быть заменены друг на друга посредством простого присваивания (необязательные функции преобразования).

Например:

Sub ByteToStringAndBack()

Dim str As String
str = "Hello, World!"

Dim byt() As Byte
byt = str

Debug.Print byt(0)  ' 72

Dim str2 As String
str2 = byt

Debug.Print str2    ' Hello, World!

End Sub

Чтобы иметь возможность кодировать символы Unicode , каждый символ в строке занимает два байта в массиве с первым младшим байтом. Например:

Sub UnicodeExample()

Dim str As String
str = ChrW(&H2123) & "."  ' Versicle character and a dot

Dim byt() As Byte
byt = str

Debug.Print byt(0), byt(1), byt(2), byt(3)  ' Prints: 35,33,46,0

End Sub

целое число

Dim Value As Integer

Целое число — это подписанный 16-битный тип данных. Он может хранить целые числа в диапазоне от -32,768 до 32,767, и попытка сохранить значение за пределами этого диапазона приведет к ошибке времени выполнения 6: переполнение.

Целые числа хранятся в памяти как малозначные значения с отрицаниями, представленными как дополнение к двум .

Обратите внимание, что в целом лучше использовать Long, а не Integer, если меньший тип не является членом типа или не требуется (либо по API-вызову, либо по другой причине), чтобы быть 2 байтами. В большинстве случаев VBA обрабатывает целые числа как 32-битные внутри, поэтому обычно нет преимуществ при использовании меньшего типа. Кроме того, каждый раз, когда используется тип Integer, он выполняет штраф за производительность, поскольку он бесшумно применяется как Long.

Функция кастинга для преобразования в Integer — это CInt() . Для бросков из типов с плавающей точкой результат округляется до ближайшего целочисленного значения с округлением .5.

логический

Dim Value As Boolean

Логическое значение используется для хранения значений, которые могут быть представлены как True или False. Внутренне тип данных сохраняется как 16-битное значение с 0, представляющим False, и любое другое значение, представляющее True.

Следует отметить, что когда Boolean применяется к числовому типу, все биты имеют значение 1. Это приводит к внутреннему представлению -1 для подписанных типов и максимальному значению для неподписанного типа (байт).

Dim Example As Boolean
Example = True
Debug.Print CInt(Example)  'Prints -1
Debug.Print CBool(42)      'Prints True
Debug.Print CByte(True)    'Prints 255

Функция кастинга для преобразования в булевское значение — CBool() . Несмотря на то, что он представлен внутренне как 16-битное число, отбрасывание в Boolean из значений вне этого диапазона безопасно от переполнения, хотя оно устанавливает все 16 бит в 1:

Dim Example As Boolean
Example = CBool(2 ^ 17)
Debug.Print CInt(Example)   'Prints -1
Debug.Print CByte(Example)  'Prints 255

Долго

Dim Value As Long

A Long — это подписанный 32-битный тип данных. Он может хранить целые числа в диапазоне от -2,147,483,648 до 2,147,483,647, и попытка сохранить значение за пределами этого диапазона приведет к ошибке времени выполнения 6: переполнение.

Длинны хранятся в памяти как малозначные значения с отрицаниями, представленными как дополнение к двум .

Обратите внимание, что поскольку Long соответствует ширине указателя в 32-разрядной операционной системе, Longs обычно используются для хранения и передачи указателей на и из функций API.

Функция кастинга для преобразования в Long — CLng() . Для бросков из типов с плавающей точкой результат округляется до ближайшего целочисленного значения с округлением .5.

не замужем

Dim Value As Single

A Single — это подписанный 32-битный тип данных с плавающей точкой. Он хранится внутренне с использованием малогабаритной схемы памяти IEEE 754 . Таким образом, не существует фиксированного диапазона значений, которые могут быть представлены типом данных. Ограничение — это точность сохраненного значения. Единица может хранить значения целочисленных значений в диапазоне от -16,777,216 до 16,777,216 без потери точности. Точность чисел с плавающей запятой зависит от экспоненты.

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

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

Функция кастинга для преобразования в Single — это CSng() .

двойной

Dim Value As Double

A Double — это подписанный 64-битный тип данных с плавающей точкой. Подобно Single , он хранится внутренне с использованием малогабаритной схемы памяти IEEE 754, и должны быть приняты те же меры предосторожности в отношении точности. Двойной объект может хранить целые значения в диапазоне от -9,007,199,254,740,992 до 9,007,199,254,740,992 без потери точности. Точность чисел с плавающей запятой зависит от экспоненты.

Двойной переполняется при назначении значения, превышающего примерно 2 1024 . Он не будет переполняться отрицательными показателями, хотя допустимая точность будет сомнительной до того, как будет достигнут верхний предел.

Функция кастинга для преобразования в Double — это CDbl() .

валюта

Dim Value As Currency

Валюта — это подписанный 64-битный тип данных с плавающей точкой, аналогичный Double , но масштабированный на 10 000, чтобы обеспечить большую точность для 4 цифр справа от десятичной точки. Переменная Currency может хранить значения от -922,337,203,685,477.5808 до 922,337,203,685,477.5807, предоставляя ей наибольшую емкость любого встроенного типа в 32-битном приложении. Как следует из названия типа данных, считается, что наилучшим образом использовать этот тип данных при представлении денежных расчетов, поскольку масштабирование помогает избежать ошибок округления.

Функция кастинга для преобразования в валюту — CCur() .

Дата

Dim Value As Date

Тип Даты представлен внутренне в качестве подписанного 64 бит с плавающей точкой типа данных со значением слева от десятичного представляющего количества дней с момента эпохи декабря 30 — го, 1899 (хотя см примечания ниже). Значение справа от десятичного знака представляет время как дробный день. Таким образом, целочисленная дата будет иметь временной компонент в 12:00:00 AM, а x.5 будет иметь временной компонент в 12:00:00 PM.

Допустимые значения Даты находятся между 1 января 100 года и 31 декабря 9999. й Поскольку двойной имеет больший диапазон, можно переполнять Дата путем присвоения значения вне этого диапазона.

Таким образом, его можно использовать взаимозаменяемо с расчетами Double for Date:

Dim MyDate As Double
MyDate = 0                                  'Epoch date.
Debug.Print Format$(MyDate, "yyyy-mm-dd")   'Prints 1899-12-30.
MyDate = MyDate + 365
Debug.Print Format$(MyDate, "yyyy-mm-dd")   'Prints 1900-12-30.

Функция кастинга для преобразования в дату — это CDate() , которая принимает любое числовое представление даты / времени с числовым типом. Важно отметить, что строковые представления дат будут преобразованы на основе текущей настройки локали, используемой, поэтому следует избегать прямых бросков, если код предназначен для переносимости.

строка

Строка представляет последовательность символов и поставляется в двух вариантах:

Переменная длина

Dim Value As String

Строка переменной длины позволяет добавлять и усекать и хранится в памяти как COM BSTR . Это состоит из 4-байтового беззнакового целого числа, которое хранит длину строки в байтах, за которой следуют строковые данные в виде широких символов (2 байта на символ) и заканчивается двумя нулевыми байтами. Таким образом, максимальная длина строки, которую может обрабатывать VBA, составляет 2 147 483 647 символов.

Внутренний указатель на структуру (восстанавливаемый StrPtr() ) указывает на расположение памяти данных , а не на префикс длины. Это означает, что VBA String может быть передана непосредственно API-функциям, которым требуется указатель на массив символов.

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

Фиксированная длина

Dim Value As String * 1024    'Declares a fixed length string of 1024 characters.

Строки фиксированной длины выделяются по 2 байта для каждого символа и сохраняются в памяти как простой массив байтов. После выделения длина строки неизменна. Они не имеют нулевой конец в памяти, поэтому строка, заполняющая память, выделенную ненулевыми символами, непригодна для передачи функциям API, ожидающих нулевую завершаемую строку.

Строки фиксированной длины несут на себе устаревшее ограничение на 16 бит, поэтому длина может составлять до 65 535 символов. Попытка присвоить значение дольше, чем доступное пространство памяти, не приведет к ошибке выполнения — вместо этого результирующее значение будет просто усечено:

Dim Foobar As String * 5
Foobar = "Foo" & "bar"
Debug.Print Foobar          'Prints "Fooba"

Функция каста для преобразования в строку любого типа — CStr() .

Долго долго

Dim Value As LongLong

LongLong — это подписанный 64-битный тип данных и доступен только в 64-битных приложениях. Он не доступен в 32 — разрядных приложений , работающих на 64 — разрядных операционных системах. Он может хранить целые значения в диапазоне от -9,223,372,036,854,775,808 до 9,223,372,036,854,775,807, и попытка сохранить значение за пределами этого диапазона приведет к ошибке времени выполнения 6: переполнение.

LongLongs хранятся в памяти как малозначные значения с отрицаниями, представленными как дополнение к двум .

Тип данных LongLong был представлен как часть поддержки 64-битной операционной системы VBA. В 64-битных приложениях это значение может использоваться для хранения и передачи указателей на 64-битные API.

Функция литья для преобразования в LongLong — CLngLng() . Для бросков из типов с плавающей точкой результат округляется до ближайшего целочисленного значения с округлением .5.

Вариант

Dim Value As Variant    'Explicit
Dim Value               'Implicit

A Variant — это тип данных COM, который используется для хранения и обмена значениями произвольных типов, а любой другой тип в VBA может быть назначен Variant. Переменные, объявленные без явного типа, указанные As [Type] умолчанию для варианта.

Варианты хранятся в памяти как структура VARIANT, которая состоит из дескриптора байтового типа ( VARTYPE ), за которым следуют 6 зарезервированных байтов, а затем 8-байтовая область данных. Для числовых типов (включая Date и Boolean) базовое значение сохраняется в самом Variant. Для всех других типов область данных содержит указатель на базовое значение.

введите описание изображения здесь

Основной тип Variant может быть определен с помощью функции VarType() которая возвращает числовое значение, хранящееся в дескрипторе типа, или функцию TypeName() которая возвращает строковое представление:

Dim Example As Variant
Example = 42
Debug.Print VarType(Example)    'Prints 2 (VT_I2)
Debug.Print TypeName(Example)   'Prints "Integer"
Example = "Some text"
Debug.Print VarType(Example)    'Prints 8 (VT_BSTR)
Debug.Print TypeName(Example)   'Prints "String"

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

Значение Результирующий тип
Строковые значения строка
Номера без плавающей запятой в диапазоне Integer целое число
Номера без плавающей запятой в дальнем расстоянии Долго
Номера без плавающей запятой вне дальнего расстояния двойной
Все числа с плавающей запятой двойной

Примечание. Если не существует конкретной причины использовать вариант (т.е. итератор в цикле For Each или требование API), тип обычно следует избегать для обычных задач по следующим причинам:

  • Они не безопасны для типов, что увеличивает вероятность ошибок во время выполнения. Например, вариант, содержащий значение Integer, беззвучно изменяет себя на Long, а не на переполнение.
  • Они вносят накладные расходы на обработку, требуя, по крайней мере, одного дополнительного разыменования указателя.
  • Требование к памяти для Variant всегда на 8 байт выше, чем требуется для хранения базового типа.

Функция кастинга для преобразования в вариант — это CVar() .

LongPtr

Dim Value As LongPtr

LongPtr был представлен в VBA для поддержки 64-битных платформ. В 32-битной системе он рассматривается как Long и на 64-битных системах, он рассматривается как LongLong .

Основное использование заключается в предоставлении переносного способа хранения и передачи указателей на обе архитектуры (см. Изменение поведения кода во время компиляции .

Хотя он обрабатывается операционной системой как адрес памяти при использовании в вызовах API, следует отметить, что VBA рассматривает его как подписанный тип (и, следовательно, подвержен неподписанному сигналу переполнения). По этой причине любая арифметика указателя, выполняемая с использованием LongPtrs, не должна использовать > или < сравнения. Этот «quirk» также позволяет добавлять простые смещения, указывающие на действительные адреса в памяти, может привести к ошибкам переполнения, поэтому следует соблюдать осторожность при работе с указателями в VBA.

Функция кастинга для преобразования в LongPtr — CLngPtr() . Для бросков из типов с плавающей точкой результат округляется до ближайшего целочисленного значения с округлением .5 (хотя, поскольку он обычно является адресом памяти, использование его в качестве целевой цели для расчета с плавающей точкой в ​​лучшем случае опасно).

Десятичный

Dim Value As Variant
Value = CDec(1.234)

'Set Value to the smallest possible Decimal value
Value = CDec("0.0000000000000000000000000001")

Тип данных Decimal доступен только в качестве CDec Variant , поэтому вы должны объявить любую переменную, которая должна содержать Decimal как Variant а затем назначить Decimal значение с CDec функции CDec . Ключевое слово Decimal является зарезервированным словом (которое предполагает, что VBA в конечном итоге будет добавлять поддержку первого класса для этого типа), поэтому Decimal нельзя использовать как имя переменной или процедуры.

Для типа Decimal требуется 14 байт памяти (в дополнение к байтам, которые требуются родительскому варианту), и может хранить номера до 28 знаков после запятой. Для чисел без знаков после запятой диапазон допустимых значений составляет -79,228,162,514,264,337,593,543,950,335 до +79,228,162,514,264,337,593,543,950,335 включительно. Для чисел с максимальным числом знаков в 28 знаков после запятой диапазон допустимых значений составляет -7.9228162514264337593543950335 по +7.9228162514264337593543950335 включительно.

Понравилась статья? Поделить с друзьями:
  • Ценники образец для распечатки word
  • Целые значения ячейки excel
  • Ценники на товары в excel
  • Целые дроби в excel
  • Ценники на товар шаблоны в word скачать бесплатно