Довгий змінний тип
VBA Довго тип даних використовується для зберігання дуже довгих значень даних (від -2 147 483 648 до 2 147 483 648). Він може зберігати лише цілі числа (без десяткових знаків).
Щоб оголосити змінну Long, ви використовуєте оператор Dim (скорочення від Dimension):
1 | Dim lngA as Long |
Тоді, щоб призначити змінній значення, просто використовуйте знак рівності:
1 | lngA = 30000 |
Введення цього в процедуру виглядає так:
12345678 | Sub lngExample ()'оголосити довгу зміннуDim lngA as Long'заповнити довгу зміннуlngA = 30000'показати вікно повідомленьMsgBox lngAEnd Sub |
Якщо ви запустите код вище, відобразиться таке вікно повідомлення.
Тип даних LongLong
Тип даних LongLong доступний лише у 64 -розрядній версії Microsoft Office. Якщо ви використовуєте 32 -розрядну версію Office на 64 -розрядній машині, цей тип даних буде недоступний. Він підтримує цифри в діапазоні від -9,223,372,036,854,775,808 до 9,223,372,036,854,775,807.
1 | Dim lngA як LongLong |
Тип даних LongPtr
LongPtr був представлений у VBA для підтримки 64 -розрядної версії Microsoft Office. У 32 -розрядній системі вона розглядається як довга, а в 64 -розрядній системі - як довга.
1 | Dim lngA як LongPtr |
Примітка: LongPtr недоступний у Excel 2007 або раніших версіях.
Десяткові значення та довгі типи даних
Довгі змінні не можуть зберігати десяткові значення. Якщо ви передаєте десяткове число довгим, воно буде округлено, щоб видалити десяткове число.
Тому, якщо ви запустите наведену нижче процедуру:
12345678 | Sub LngExampleB ()'оголосити довгу зміннуDim lngA as Long'заповнити довгу зміннуlngA = 3524,12'показати вікно повідомленьMsgBox lngAEnd Sub |
Десяткове значення буде округлено вниз, повертаючи таке повідомлення:
Однак цей код нижче:
12345678 | Sub LngExampleB ()'оголосити довгу зміннуDim lngA as Long'заповнити довгу зміннуlngA = 3524,12'показати вікно повідомленьMsgBox lngAEnd Sub |
Повертає таке вікно повідомлення (округлення):
Десятковий / подвійний тип даних
Якщо ви хочете зберегти десятковий знак, вам потрібно буде оголосити змінну, яка допускає десяткові знаки. Ви можете використовувати 3 типи даних - одиночний, подвійний або валютний.
1 | Ціна як Single |
1 | Dim dblPrice як Double |
1 | Ціна як валюта |
Тип даних Single буде округляти десяткову точку дещо інакше, ніж тип даних подвійний та валютний, тому для точності краще використовувати подвійне до одиничного. Подвійний може мати до 12 знаків після коми, тоді як валюта та одинарний можуть мати до 4 знаків після коми.
Оголошення довгої змінної на модульному або глобальному рівні
У попередніх прикладах ми оголошували змінну Long у процедурі. Змінні, оголошені процедурою, можна використовувати лише в рамках цієї процедури.
Замість цього ви можете оголосити довгі змінні на модульному або глобальному рівні.
Рівень модуля
Рівень модуля змінні оголошуються у верхній частині модулів коду за допомогою Dim заяву.
Ці змінні можна використовувати з будь -якою процедурою в цьому модулі коду.
Глобальний рівень
Глобальний рівень змінні також оголошуються у верхній частині модулів коду. Однак замість використання Dim висловлювання, використовуйте Громадські , щоб вказати, що довга змінна доступна для використання у вашому проекті VBA.
1 | Публічна lngA як довга |
Якщо ви повинні оголосити довгу змінну на рівні модуля, а потім спробувати використати її в іншому модулі, станеться помилка.
Однак, якби ви використовували ключове слово Public для оголошення довгої змінної, помилка не відбулася б, і процедура працювала б ідеально.
Формат довго зберігається як рядок
Може бути час, коли ви хочете відформатувати довгий тип даних у рядку - наприклад, дату або ви можете відобразити символ валюти.
Для цього використовуйте функцію Формат.
Наступна процедура:
1234567891011 | Sub TestLongToString ()'оголосити рядкову зміннуЗатемнити strDate як рядок'оголосити long і заповнити значенняЗатемніть lngDate до тих пірlngDate = 44055'перетворити long у рядок, відформатований як датаstrDate = Формат (lngDate, "дд мммм рррр")'переглянути результатНалагодження.Надрукувати strDateEnd Sub |
поверне результат нижче:
та наступну процедуру
1234567891011 | Sub TestLongtoCurrencyString ()'оголосити рядкову зміннуЗатемнити strMoney As String'оголосити long і заповнити значенняDim lngValue As LonglngValue = 44055'перетворити лонг у рядок із символом валютиstrMoney = Формат (lngValue, "$#, ## 0")'переглянути результатMsgBox strMoneyEnd Sub |
поверне цей результат: