Loại biến dài
VBA Dài kiểu dữ liệu được sử dụng để lưu trữ các giá trị dữ liệu rất dài (-2,147,483,648 đến 2,147,483,648). Nó chỉ có thể lưu trữ các số nguyên (không có chữ số thập phân).
Để khai báo một biến Long, bạn sử dụng Câu lệnh Dim (viết tắt của Dimension):
1 | Dim lngA as Long |
Sau đó, để gán giá trị cho một biến, chỉ cần sử dụng dấu bằng:
1 | lngA = 30000 |
Đặt điều này trong một thủ tục trông giống như sau:
12345678 | Sub lngExample ()'khai báo biến dàiDim lngA as Long'điền biến dàilngA = 30000'hiển thị hộp tin nhắnMsgBox lngAKết thúc Sub |
Nếu bạn chạy đoạn mã trên, hộp thông báo sau sẽ được hiển thị.
Kiểu dữ liệu LongLong
Kiểu dữ liệu LongLong chỉ có sẵn trong phiên bản 64 bit của Microsoft Office. Nếu bạn đang chạy phiên bản Office 32 bit trên máy 64 bit, kiểu dữ liệu này sẽ không khả dụng. Nó hỗ trợ các số trong phạm vi -9,223,372,036,854,775,808 đến 9,223,372,036,854,775,807.
1 | Dim lngA trong vai LongLong |
Kiểu dữ liệu LongPtr
LongPtr đã được đưa vào VBA để hỗ trợ phiên bản 64 bit của Microsoft Office. Trên hệ thống 32 bit, nó được coi là Long và trên hệ thống 64 bit, nó được coi là LongLong.
1 | Dim lngA là LongPtr |
Lưu ý: LongPtr không khả dụng trong Excel 2007 hoặc phiên bản cũ hơn.
Giá trị thập phân & kiểu dữ liệu dài
Các biến dài không thể lưu trữ các giá trị thập phân. Nếu bạn chuyển dài một số thập phân, số thập phân sẽ được làm tròn để loại bỏ số thập phân.
Do đó, nếu bạn phải chạy quy trình dưới đây:
12345678 | Sub LngExampleB ()'khai báo biến dàiDim lngA as Long'điền biến dàilngA = 3524,12'hiển thị hộp tin nhắnMsgBox lngAKết thúc Sub |
Giá trị thập phân sẽ được làm tròn xuống, trả về thông báo sau:
Tuy nhiên, mã này bên dưới:
12345678 | Sub LngExampleB ()'khai báo biến dàiDim lngA as Long'điền biến dàilngA = 3524,12'hiển thị hộp tin nhắnMsgBox lngAKết thúc Sub |
Sẽ trả về hộp thông báo sau (làm tròn lên):
Kiểu dữ liệu thập phân / kép
Nếu bạn muốn lưu trữ một vị trí thập phân, bạn sẽ cần phải khai báo một biến cho phép các vị trí thập phân. Có 3 kiểu dữ liệu mà bạn có thể sử dụng - Đơn, Đôi hoặc Tiền tệ.
1 | Dim sng |
1 | Dim dblGiá gấp đôi |
1 | Dim curGiá theo đơn vị tiền tệ |
Kiểu dữ liệu Đơn sẽ làm tròn dấu thập phân hơi khác với kiểu dữ liệu kép và đơn vị tiền tệ, vì vậy bạn nên sử dụng từ đôi thành đơn để có độ chính xác. Một Đôi có thể có tối đa 12 chữ số thập phân trong khi Đơn vị tiền tệ và Đơn vị đều có thể có tối đa 4 chữ số thập phân.
Khai báo biến dài ở cấp mô-đun hoặc cấp toàn cầu
Trong các ví dụ trước, chúng tôi đã khai báo biến Long trong một thủ tục. Các biến được khai báo với một thủ tục chỉ có thể được sử dụng trong thủ tục đó.
Thay vào đó, bạn có thể khai báo các biến Long ở cấp độ mô-đun hoặc toàn cục.
Cấp độ mô-đun
Cấp mô-đun các biến được khai báo ở đầu mô-đun mã với Lờ mờ tuyên bố.
Các biến này có thể được sử dụng với bất kỳ thủ tục nào trong mô-đun mã đó.
Cấp độ toàn cầu
Cấp độ toàn cầu các biến cũng được khai báo ở đầu mô-đun mã. Tuy nhiên, thay vì sử dụng Lờ mờ tuyên bố, sử dụng Công cộng để chỉ ra rằng biến dài có sẵn để được sử dụng trong suốt Dự án VBA của bạn.
1 | Public lngA as Long |
Nếu bạn khai báo biến dài ở cấp độ mô-đun và sau đó cố gắng sử dụng nó trong một mô-đun khác, sẽ xảy ra lỗi.
Tuy nhiên, nếu bạn đã sử dụng từ khóa Public để khai báo biến long, thì lỗi sẽ không xảy ra và thủ tục sẽ chạy hoàn hảo.
Định dạng được lưu trữ dài dưới dạng chuỗi
Có thể có lúc bạn muốn định dạng một kiểu dữ liệu dài thành một chuỗi - chẳng hạn như ngày tháng hoặc bạn có thể muốn hiển thị một ký hiệu tiền tệ.
Để đạt được điều này, bạn sử dụng chức năng Định dạng.
Quy trình sau:
1234567891011 | Sub TestLongToString ()'khai báo biến chuỗiDim strDate dưới dạng chuỗi'khai báo long và điền giá trịDim lng Ngày càng lâulngDate = 44055'chuyển đổi dài thành một chuỗi được định dạng như một ngàystrDate = Định dạng (lngDate, "dd mmmm yyyy")'xem kết quảDebug.Print strDateKết thúc Sub |
sẽ trả về kết quả bên dưới:
và quy trình sau đây
1234567891011 | Sub TestLongtoCurrencyString ()'khai báo biến chuỗiDim strMoney As String'khai báo long và điền giá trịDim lngValue As LonglngValue = 44055'chuyển đổi dài thành một chuỗi có ký hiệu tiền tệstrMoney = Định dạng (lngValue, "$ #, ## 0")'xem kết quảMsgBox strMoneyKết thúc Sub |
sẽ trả về kết quả này: