vba data types numeric
Цей посібник пояснює різні числові та нечислові типи даних, доступні у VBA. Ми також дізнаємося про перетворення типів даних :
Ми щодня стикаємося з багатьма типами даних, такими як назва, дата, рахунки, ціна товару тощо. Усі ці дані належать до певного типу, і їх значення не можуть відхилятися від типу, що до нього додається. Аналогічно, VBA має багато типів даних, які використовуються для виконання необхідних дій.
У цьому підручнику ми вивчимо різні типи даних, що використовуються у VBA, і побачимо, як вони допоможуть в організації нашої програми. Ми також розглянемо перетворення одного типу даних на інший тип даних.
=> Перевірте ВСІ підручники VBA тут
Що ви дізнаєтесь:
- Категорії типів даних
- Висновок
Категорії типів даних
Тип даних повідомляє комп’ютеру тип даних, які потрібно зберігати за допомогою змінної. Типи даних поділяються на 2 категорії, тобто числові та нечислові типи даних
Числові типи даних
Ці типи використовуються для виконання математичних операцій, таких як Додавання, Віднімання тощо. Приклад, відсотковий розрахунок, ціна акцій, збори, купюри, вік тощо.
У VBA існує 7 типів числових типів даних, як зазначено нижче.
Числовий тип даних | |
---|---|
7 | Десяткова |
1 | Байт |
два | Ціле число |
3 | Довгота |
4 | Неодружений |
5 | Подвійний |
6 | Валюта |
Давайте коротко розглянемо всі числові типи даних.
# 1) Тип байтових даних
Для цього типу даних потрібен лише один байт пам'яті. Змінні з типом даних Byte можуть зберігати значення від 0 до 255. Значення байта за замовчуванням - 0. Негативні значення та значення, що перевищують 255, не допускаються. У випадку, якщо ви спробуєте призначити недійсні значення, буде повернуто повідомлення про помилку переповнення.
Синтаксис: Dim Vname As Byte
який ваш ключ безпеки мережі
Тут Vname - ім'я змінної, а Byte - тип даних змінної.
Приклад:
Sub ByteDTtest() Dim vname1 As Byte vname1 = 10 MsgBox 'Value of vname1 is : “ &vname1 End Sub
Результат наведено нижче
# 2) Цілочисельний тип даних
Ці типи даних використовуються для зберігання цілого цілого значення. Це займає 2 байти пам'яті. Ціле число - це один із часто використовуваних типів даних. Вони також приймають як позитивні, так і негативні значення. Вони мають діапазон від -32,768 до 32,767.
Синтаксис: Dim запалюється як ціле число
Приклад:
Sub IntDTtest() Dim vname1, vname2 As Integer vname1 = 10 vname2 = -20 MsgBox 'Value of Integer variable is ' & vname1 & ' and ' & vname2 End Sub
Результат наведено нижче
# 3) Довгий тип даних
Це альтернатива цілочисельному типу даних, який також зберігає ціле ціле значення. Однак він займає більше пам'яті, ніж ціла змінна, яка становить 4 байти. Він має діапазон значень від -2,147,483,648 до 2,147,483,648
Синтаксис: Dim vname As Long
Sub IntDTtest() Dim vname1, vname2 As Integer vname1 = 10 vname2 = -20 MsgBox 'Value of Integer variable is ' & vname1 & ' and ' & vname2 End Sub
Якщо виконати наведений вище код із цілочисельною змінною, ви отримаєте помилку переповнення, оскільки в Excel є 1048576 рядків, а тип даних Integer підтримує лише до 32767. Як показано нижче, коли тип даних довгий, відображається відповідний результат.
Але коли тип даних - ціле число, виникає помилка переповнення.
# 4) Тип десяткових даних
Це точний числовий тип даних, який використовується для його точності. Це загальна кількість цифр і кількість цифр праворуч від десяткової коми, що називається коефіцієнтом масштабування.
У VBA числа масштабуються по степеню 10. Доцільно використовувати ці типи під час маніпулювання великими числами, які потребують точного значення. Це займає 14 байт пам'яті.
Але змінні не можуть бути оголошені безпосередньо як десятковий тип даних. Для того, щоб використовувати Decimal, ви повинні використовувати функцію перетворення CDec. Вам потрібно використовувати тип даних Variant.
Цей тип даних містить нижченаведений діапазон значень.
+/- 79,228,162,514,264,337,593,543,950,335 без десяткової коми
+/- 7.9228162514264337593543950335 з 28 знаками після коми праворуч від десяткової коми.
Найменшим ненульовим значенням є +/- 0,0000000000000000000000000001.
Синтаксис: Dim запалюється як варіант
Sub DecimalDataTypeTest() Dim DecValue As Variant DecValue = CDec(1000.4560323034) MsgBox 'Data type of Decvalue variable is : ' & TypeName(DecValue) & ' value ' & DecValue End Sub
Примітка: Функція TypeName дасть ім'я типу даних
Вихід:
# 5) Єдиний тип даних
Цей тип даних використовується для зберігання чисел з плаваючою комою з однією точністю. Він займає 4 байти пам'яті. Значення за замовчуванням - 0 і зберігає десяткові значення. Ви можете використовувати знак оклику (!) Під час оголошення змінної, як показано в синтаксисі нижче.
Допустимим діапазоном значень є:
Від 3.402823E38 до -1.401298E-45 для від’ємних значень
Від 1.401298E-45 до 3.402823E38 для позитивних значень.
Синтаксис
Ім'я незмінної змінної як єдине
або
Ім'я незмінної змінної!
Sub SingleDataTypeTest() Dim SingleVal1 As Single Dim SingleVal2! SingleVal1 = 123 SingleVal2 = 333.44 MsgBox ('Data type of SingleVal1 is ' & TypeName(SingleVal1) & ' with value ' & SingleVal1 & ' and datatype of SingleVal2 is ' & TypeName(SingleVal2) & ' with value ' & SingleVal2) End Sub
# 6) Подвійний тип даних
Дані Double VBA можна використовувати для зберігання як цілих чи дробних значень. Double використовується для зберігання чисел з плаваючою комою з подвійною точністю. Він займає 8 байт пам'яті і має ряд значень.
Від -1,79769313486231E308 до -4,94065645841247E-324 для від'ємних значень
4.94065645841247E-324 до 1.79769313486232E308 для позитивних значень
Як і тип даних Single, подвійний також можна оголосити, використовуючи символ Hash (#), як показано нижче.
Синтаксис
Ім'я незмінної змінної як подвійне
або
Ім'я незмінної змінної #
Sub DoubleDataTypeTest() Dim douValue As Double Dim douVal1# douValue = 100.21 douVal1 = 333.44 MsgBox ('Data type of douValue is ' & TypeName(douValue) & ' with value ' & douValue & ' and datatype of douVal1 is ' & TypeName(douVal1) & ' with value ' & douVal1) End Sub
# 7) Тип даних про валюту
Цей тип даних може зайняти до 8 байт пам’яті. Цей тип даних дає точне значення, на відміну від одиничного та подвійного типів даних, про які ми вже говорили, округлені. Вони корисні для грошових розрахунків.
Тип даних валюти може зберігати як позитивні, так і негативні значення. Вони можуть зберігати 15 цифр ліворуч від десяткової і 4 цифри праворуч.
Дозволений діапазон становить від -922,337,203,685,477.5808 до 922,337,203,685,477.5807. Ви можете використовувати @, щоб оголосити типи даних валюти.
Синтаксис
Ім'я незмінної змінної як валюта
або
Приглушене ім'я змінної @
Sub CurrencyDataTypeTest() Dim val1 As Currency Dim Val2@ val1 = 123 Val2 = 333.44 MsgBox ('Data type of Val1 is ' & TypeName(val1) &” with value “ &val1 & ' and datatype of Val2 is ' & TypeName(Val2) & “ with value “ &val2) End Sub
Вихід:
Примітка :Якщо значення змінної перевищує наданий діапазон для певного типу даних, буде видано помилку переповнення.
Розглянемо простий приклад байтового типу даних, що перевищує його діапазон. Та сама помилка відображатиметься, якщо ви введете негативні значення для типу байтових даних.
Нечислові типи даних
Це дані, якими не можуть керувати арифметичні оператори. Вони складаються з тексту, рядка, дати тощо. Нижче наведені нечислові типи даних, підтримувані VBA.
Нечисловий тип даних | |
---|---|
7 | Варіант (символи) |
1 | Рядок (фіксована довжина) |
два | Рядок (змінна довжина) |
3 | Дата |
4 | Логічна |
5 | Об'єкт |
6 | Варіант (цифри) |
# 1) Логічний тип даних
Цей тип даних вимагає 2 байти пам'яті і може зберігати лише 2 значення, тобто TRUE або FALSE. Іншими словами, булева змінна може отримати значення лише TRUE або FALSE, або 1 або 0 відповідно. Значенням за замовчуванням булевої змінної є False.
Синтаксис - неясне ім’я як логічне значення
Приклад:
Sub BooleanDataTypeTest() Dim bval1 As Boolean MsgBox ('datatype of variable bval1 is :' & TypeName(bval1) & ' default value of boolean varible is ' & bval1) End Sub
# 2) Тип даних дати
Цей тип даних використовується для подання дати та часу. Він має значення діапазону дат з 1 січня 0100 року до 31 грудня 9999 року, а значення часу - з 0:00:00 до 23:59:59 і займає 8 байтів розміру сховища.
Синтаксис: Дим запалюється як дата
Sub DateDataTypeTest() Dim datetime As Date datetime = Now MsgBox 'Current date and time is ' & datetime End Sub
Примітка: Тепер функція дає поточну дату та час
# 3) Тип даних рядка
Цей тип даних використовується для зберігання рядкового значення. Рядок визначається як послідовність символів. Таким чином, ви можете використовувати тип даних String для зберігання тексту, а також - для зберігання чисел, спеціальних символів, s та просторів подій. Значення рядка має бути вбудовано у подвійні лапки “”.
Існує 2 типи типу даних String.
# 1) Рядок із змінною довжиною: Цей тип займає 10 байт обсягу пам’яті плюс пам’ять, необхідна для рядка, що є довжиною рядка. Вони мають діапазон значень від 0 до приблизно 2 мільярдів.
# 2) Рядок фіксованої довжини: Він займає пам'ять, рівну довжині самого рядка. Він може містити від 1 до приблизно 65 400 символів
Синтаксис: Приглушити ім'я як рядок
Приклад:
типи функцій c ++
Sub StringDataTypeTest() Dim sVal1 As String sVal1 = 'Text1234#$@ and Spaces:)' MsgBox 'I can accept anything ' & sVal1 End Sub
# 4) Тип даних об’єкта
Об'єкт матиме посилання на об'єкт будь-якого типу, тобто тип даних об'єкта може вказувати на будь-який тип даних, наприклад рядок, подвійне, ціле число тощо. зберігається. Він займає 4 байти пам’яті комп’ютера. Значенням за замовчуванням об’єкта є нульове посилання.
Синтаксис: Вимкнути VName як об'єкт
Приклад:
Sub ObjectDataTypeTest() Dim wsActiveSheet As Object Set wsActiveSheet = ActiveSheet wsActiveSheet.UsedRange.Clear End Sub
Це очистить усі використані комірки поточного аркуша.
c ++ 11 запитань на співбесіду
# 5) Варіантний тип даних
Це універсальний тип даних VBA, він може приймати будь-які дані числові та нечислові. Варіантний тип даних надає більшу гнучкість під час роботи з даними. Варіантний тип даних використовує більший обсяг пам’яті, ніж будь-який інший тип даних. Якщо ви не згадаєте тип даних, VBA розгляне його як змінну Variant.
Існує 2 типи типів даних Variant
# 1) Варіант (цифри): Він може містити будь-яке числове значення до діапазону Double. Числа Variant займають 16 байт розміру пам'яті.
# 2) Варіант (символи): Він може містити той самий діапазон, що і для рядка змінної довжини. Символи Variant займають 22 байти + довжина рядка (24 байти в 64-розрядних системах)
Синтаксис
Приглушити VName як варіант
або
Тьмяне ім’я
Приклад:
Sub VariantDataTypeTest() Dim EmpName As Variant Dim DOB Dim Salary As Variant EmpName = 'Jofn kim' DOB = #10/3/2020# Salary = 55000 MsgBox EmpName & ' ' & DOB & ' ' & Salary End Sub
Перетворення типів даних
Іноді виникає необхідність перетворити тип даних змінної на щось конкретне у нашому випадку використання.
Приклад: Ви отримуєте значення з комірки, яке зазвичай є рядком, і, отже, вам потрібно перетворити його в числовий тип даних перед виконанням будь-якої арифметичної операції. Для досягнення цього VBA має функції перетворення типів для всіх підтримуваних типів даних.
# 1) CBool
Ця функція використовується для перетворення виразу в логічний тип даних. Якщо вираз повертає нуль, тоді CBool повертає False, будь-яке ненульове значення, CBool повертає True.
Sub CBooleanTest() Dim val1 As Integer Dim strval2 As String val1 = 0 MsgBox CBool(val1) val1 = 177 MsgBox CBool(val1) strval2 = 'A' MsgBox CBool(strval2 = 'B') MsgBox CBool(strval2 'B') End Sub
Наведений вище код поверне результати як False, True, False, True.
Ви можете спробувати самостійно, намалювати командну кнопку керування ActiveX, клацнути правою кнопкою миші -> Переглянути код та вставити вищевказаний код. Клацніть на кнопку Command, і результат відобразиться. (Вимкнути режим проектування)
Вихідні дані
# 2) CByte
Ця функція використовується для перетворення виразу у тип даних Byte. Пам'ятайте після перетворення, якщо діапазон перевищує діапазон, дозволений для байта, тоді буде видано помилку переповнення.
Sub cbyteTest() Dim val1 As Double Dim val2 val1 = 125.5678 val2 = CByte(val1) MsgBox ('DataType is ' & TypeName(val2) & ' and value of val2 is ' & val2) End Sub
Примітка: Якщо ви вказали значення 255,56. Complier поверне помилку переповнення
# 3) CCur
Ця функція перетворить вираз на тип даних Currency.
Sub ccurTest() Dim val1 As Integer Dim val2 val1 = 5544 val2 = CCur(val1 / 5) MsgBox ('DataType is ' & TypeName(val2) & ' and value of val2 is ' & val2) End Sub
# 4) CDate
Ця функція перетворить рядок на дату. Припустимо, ви отримуєте значення Date у вигляді рядка з комірки Excel, тоді вам потрібно перетворити його перед виконанням будь-яких подальших дій. Ви можете використовувати CDate.
Sub CDateTest() Dim val1, val2, val3 As String Dim Res1, Res2, Res3 val1 = '12:21' val2 = '23/09 12:12' val3 = 'Sep 23, 2020' Res1 = CDate(val1) Res2 = CDate(val2) Res3 = CDate(val3) MsgBox 'Date of val1 is : ' & Res1 & ' Date of val2 is : ' & Res2 & ' Date of val3 is ' & Res3 End Sub
# 5) CDbl
Функція CDbl використовується для перетворення виразу у тип даних Double.
Sub CDblTest() Dim val1 As String Dim val2 As Integer Dim Res1 val1 = 10000.12345 val2 = 1222.222 Res1 = CDbl(val1) Res2 = CDbl(val2) MsgBox 'Double value after converting String : ' & Res1 & ' Double value after converting Integer : ' & Res2 End Sub
# 6) CDec
Ця функція перетворить числове значення в десяткове.
Sub CDecTest() Dim Val1 As Currency Dim Result Val1 = 1234566.56366 Result = CDec(Val1) ‘Result is 1234566.5637 MsgBox 'Decimal Data Type Value : ' & Result End Sub
# 7) CInt
Функція CInt перетворить значення на цілий тип даних.
Sub CintTest() Dim Val1 As Double Dim Result Val1 = 2345.5678 Result = CInt(Val1) 'Result is 2346 MsgBox 'Integer value of converting is : ' & Result & ' and datatype of Result is ' & TypeName(Result) End Sub
# 8) CLng
Ця функція використовується для перетворення значення в довгий тип даних
Sub cLngTest() Dim Val1, Val2 As Double Dim Res1, Res2 Val1 = 45457.35 Val2 = 45457.65 Res1 = CLng(Val1) Res2 = CLng(Val2) MsgBox 'Result after converting Res1 is ' & Res1 & ' and Res2 value is ' & Res2 End Sub
# 9) CSng
Ця функція перетворить значення в єдиний тип даних
Sub cSngTest() Dim Val1, Val2 As Double Dim Res1, Res2 Val1 = 75.3421115 Val2 = 75.3421555 Res1 = CSng(Val1) ' Result is 75.34211. Res2 = CSng(Val2) ' Result is 75.34216. MsgBox 'Result after converting Res1 is ' & Res1 & ' and Res2 value is ' & Res2 End Sub
# 10) CStr
Ця функція використовується для перетворення числового значення у рядок типу даних.
Sub CStrTest() Dim Val1 As Double Dim Result Val1 = 123.123 Result = CStr(Val1) 'Result will be 123.123 MsgBox 'Result of Val1 is ' & Val1 End Sub
# 11) CVar
Ця функція перетворить вираз на тип даних Variant.
Sub CVarTest() Dim Val1 As Integer Dim Result Val1 = 1234 Result = CVar(Val1 & 1.12) ' Result will be 12341.12 MsgBox 'Result is ' & Result End Sub
Часті запитання
Q # 1) Який тип даних за замовчуванням у VBA?
Відповідь: Варіант є типовим. Якщо ви не визначаєте тип даних змінної, тоді VBA розглядає її як варіант змінної / об’єкта.
Q # 2) Що таке помилка невідповідності типу?
Відповідь: Ця помилка буде спрацьовано, коли ви оголосите змінну одним типом даних і призначите невідповідне значення.
Приклад: Оголосіть змінну як Integer і введіть текстове значення.
Q # 3) Як виправити помилку переповнення?
Відповідь: Вам потрібно звернутися до діапазону, для якого дозволено певний тип даних, і переконатися, що ви ввели значення в межах дозволеного діапазону.
Приклад: Байт допускає лише від 0 до 255, якщо ви введете будь-яке від’ємне значення або значення v більше 255, тоді ви зустрінете помилку переповнення.
Висновок
У цьому підручнику ми дізналися про типи даних VBA, тобто 7 числових та 7 нечислових типів даних. Ми також обговорили, як перетворити тип даних з одного типу на інший на прикладах.
=> Перегляньте тут, щоб побачити A-Z навчальних посібників VBA