Loại dữ liệu dài VBA (Biến mờ)

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:

wave wave wave wave wave