Khai báo biến số thập phân trong vba là gì

Trong mô hình dữ liệu, thì mỗi cột, mỗi ô đều có một kiểu dữ liệu như: số nguyên, số thập phân, văn bản, tiền tệ, ngày và giờ, ...

Kiểu dữ liệu cũng xác định được loại thao tác bạn có thể thực hiện trên ô/cột, và cần bao nhiêu bộ nhớ để lưu trữ nó.

Các kiểu dữ liệu thường dùng trong lập trình VBA Excel

1. Kiểu dữ liệu Boolean

Các biến được khai báo theo kiểu Boolean được lưu trữ dưới dạng số 16 bit (2 byte), nhưng chỉ trả về dưới dạng True hoặc False. Có thể sử dụng True hoặc False để gán cho một trong hai trạng thái của các biến kiểu Boolean. Khai báo:

Dim bien As Boolean Function () As Boolean

2. Kiểu dữ liệu số - Byte

Biến Byte được lưu trữ dưới dạng số đơn, 8 bit (1 byte) khác nhau, có giá trị từ 0 đến 255. Khai báo:

Dim bien As Byte Function () As Byte

3. Kiểu dữ liệu tiền tệ - Currency

Biến Currency được lưu trữ dưới dạng số 64 bit (8 byte) ở định dạng số nguyên, được chia theo tỷ lệ 10,000 để cung cấp số cố dịnh với 15 chữ số bên trái dấu thập phân và 4 chữ số bên phải. Các biến kiểu currency nằm trong giới hạn từ -922,337,203,685,477.5808 tới 922,337,203,685,477.5807 Khai báo:

Dim bien As Currency

4. Kiểu dữ liệu ngày tháng - Date

Biến Date được lưu trữ dưới dạng số dấu phẩy động IEEE 64 bit (8 byte). Các biến được giới hạn từ ngày 1 tháng 1 đến 31 tháng 12 năm 9999 và thời gian từ 0:00:00 đến 23:59:59. Khai báo:

Dim iDate As Date

iDate =

12/31/2009#

iDate =

31/12/2007#

iDate = "December 31, 2009"

iDate =

01:30:05 AM#

iDate =

31/12/06 08:05:30 AM#

Các định dạng ngày tháng Constant Giá trị Miêu tả vbGeneralDate 0 Hiển thị ngày và / hoặc thời gian. Nếu không có phần phân đoạn, chỉ hiển thị một ngày. Nếu không có phần nguyên, chỉ hiển thị thời gian. Ngày và giờ hiển thị được xác định bởi system settings trên máy tính của bạn. vbLongDate 1 Hiển thị ngày bằng định dạng ngày dài được chỉ định trong regional settings của máy tính. vbShortDate 2 Hiển thị ngày bằng định dạng ngày ngắn được chỉ định trong regional settings của máy tính. vbLongTime 3 Hiển thị thời gian bằng định dạng thời gian dài được chỉ định trong regional settings của máy tính. vbShortTime 4 Hiển thị thời gian bằng định dạng thời gian ngắn được chỉ định trong regional settings của máy tính. Đối số firstdayofweek Constant Giá trị Miêu tả vbUseSystem 0 Sử dụng cài đặt API NLS. vbSunday 1 Chủ nhật (mặc định) vbMonday 2 Thứ hai vbTuesday 3 Thứ ba vbWednesday 4 Thứ tư vbThursday 5 Thứ năm vbFriday 6 Thứ sáu vbSaturday 7 Thứ bảy Đối số firstdayofyear Constant Giá trị Miêu tả vbUseSystemDayOfWeek 0 Sử dụng ngày trong tuần được chỉ định trong cài đặt hệ thống của bạn cho ngày đầu tiên của tuần. vbFirstJan1 1 Bắt đầu với tuần trong đó ngày 1 tháng 1 xảy ra (mặc định). vbFirstFourDays 2 Bắt đầu với tuần đầu tiên có ít nhất bốn ngày trong năm mới. vbFirstFullWeek 3 Bắt đầu với tuần đầy đủ đầu tiên của năm.

5. Kiểu dữ liệu số nguyên - Integer

Biến Integer được lưu trữ dưới dạng số nguyên 32 bit (4 byte). Các biến có giá trị từ -2,147,483,648 đến 2,147,483,647.

Khai báo:

Dim k as Integer

6. Kiểu dữ liệu số nguyên - Long

Biến Long được lưu trữ dưới dạng số nguyên 64 bit (8 byte). Các biến có giá trị từ -9,223,372,036,854,775,808 đến 9,223,372,036,854,775,807 .

Bài viết này mô tả cách sử dụng biến số Microsoft Excel thủ tục con trong Microsoft Visual Basic for Applications.

Xem thêm thông tin

Các biến trong một thủ tục con

Một tính năng mạnh mẽ của ngôn ngữ lập trình là khả năng lưu trữ thông tin gì đó trong một biến để có thể sử dụng nội dung của biến hoặc có thể được thay đổi sau đó trong quy trình. Tài liệu này thảo luận về việc sử dụng các biến số sau đây trong Visual Basic:

  • Cách khai báo các biến.
  • Các thủ tục và dự án có thể sử dụng biến số.
  • Tuổi thọ của biến số.

Khai báo biến trong macro

Cách đơn giản nhất để khai báo biến trong macro là dùng câu lệnh Dim. Dòng sau đây khai báo hai biến số, là số nguyên:

Dim x As Integer, y As Integer

Với x và y được xác định là số nguyên, bạn đang yêu cầu Visual Basic dành đủ bộ nhớ cho biến số nguyên (2 byte cho mỗi số x và y) và thông tin được lưu trữ trong hoặc x hoặc y là một số nguyên trong khoảng từ -32768 đến 32767.

LƯU Ý: Nếu bạn khai báo nhiều biến bằng cách dùng một câu lệnh Dim duy nhất, bạn phải xác định kiểu dữ liệu cho mỗi biến.

Nếu bạn không xác định kiểu dữ liệu cho mỗi biến, như trong mã Visual Basic sau, chỉ có biến y được thiết lập làm biến số nguyên. Biến x sẽ là một loại biến thể:

Dim x, y As Integer

Để biết thêm thông tin, hãy xem mục Kiểu dữ liệu biến thể dưới đây.

Để thực hiện kiểm tra biến số, hãy làm theo các bước sau:

  1. Lưu và đóng bất kỳ sổ làm việc nào đang mở, rồi mở một sổ làm việc mới.
  2. Bắt đầu Trình Visual Basic Thảo (nhấn ALT+F11).
  3. Trên menu Chèn, bấm vào Mô-đun.
  4. Nhập mã sau đây: Sub Variable_Test() Dim x As Integer, y As Integer x = 10 y = 100 MsgBox "giá trị của x là " & x & _ Chr(13) & "giá trị y là " & y End Sub
  5. Chạy macro Variable_Test trang. Bạn nhận được thông báo sau đây: the value of x is 10 the value of y is 100
  6. Bấm vào OK.
  7. Trong hộp Variable_Test macro, thay đổi dòng sau đây: x = 10
  8. Chạy macro Variable_Test trang.

Bạn sẽ gặp lỗi thời gian chạy vì "lỗi" không phải là số nguyên và bạn đang tìm cách gán giá trị chuỗi này cho biến số nguyên x.

Tóm tắt kiểu dữ liệu

Đây là các kiểu dữ liệu biến thường gặp:

Khai báo biến số thập phân trong vba là gì

Loại dữ liệu biến

Nếu bạn không xác định kiểu dữ liệu khi khai báo biến hoặc bạn không khai báo biến số, thì Visual Basic sẽ tự động xác định kiểu dữ liệu biến cho biến số này. Sau đây là những ưu điểm của biến số được khai báo là kiểu dữ liệu này:

  • Các biến số có thể chứa các giá trị chuỗi, ngày, thời gian, Boolean hoặc số.
  • Các biến số có thể chuyển đổi giá trị mà chúng tự động chứa.

Nhược điểm là biến số biến thể yêu cầu ít nhất 16 byte bộ nhớ. 16 byte bộ nhớ có thể đáng kể trong các thủ tục lớn hoặc trong mô-đun phức tạp.

Để xem cách hoạt động của macro Variable_Test, hãy làm theo các bước sau:

Thay đổi mã trong macro Variable_Test macro thành:

________0

Chạy macro Variable_Test trang.

Bạn sẽ không nhận được lỗi vì bạn có thể gán bất cứ giá trị nào cho các biến biến thể x và y.

LƯU Ý: Bạn cũng có thể bỏ qua dòng sau đây và macro sẽ vẫn hoạt động như các biến x và y được coi là kiểu dữ liệu Variant:

Dim x, y

Phạm vi biến số

Khi bạn khai báo biến số, các macro khác trong cùng mô-đun hoặc trong các dự án khác có thể nhìn thấy hoặc không nhìn thấy biến đó. Sự sẵn sàng của biến số trong mô-đun được gọi là phạm vi. Ba loại phạm vi là mức thủ tục, mức mô-đun riêng và mức mô-đun công cộng. Phạm vi này phụ thuộc vào cách thức và vị trí bạn khai báo biến số hoặc biến số của mình.

Phạm vi mức thủ tục

Biến số với phạm vi mức thủ tục không nhìn thấy bên ngoài thủ tục ở nơi nó được khai báo. Nếu bạn đặt giá trị của biến số có phạm vi mức thủ tục, thì các macro khác sẽ không nhìn thấy nội dung của biến đó.

Để xác nhận rằng không nhìn thấy biến trong phạm vi mức thủ tục bên ngoài thủ tục khai báo, hãy làm theo các bước sau:

  1. Chèn mô-đun mới vào dự án của bạn.
  2. Nhập cả hai macro sau vào mô-đun này: Macro Phụ 1() Dim x As Integer x = 10 MsgBox "x, as seen by Macro1 is " & x 'the next line runs Macro2 Macro2 End Sub Macro2() MsgBox "x, as seen by Macro2 is " & x End Sub
  3. Chạy Macro1, rồi bạn sẽ nhận được thông báo sau: x, as seen by Macro1 is 10
  4. Bấm vào OK, bạn sẽ nhận được thông báo sau: x, as seen by Macro2 is
  5. Bấm vào OK.

Macro2 không hiển thị giá trị cho biến x vì biến x cục bộ trong Macro1.

Phạm vi mức mô-đun công cộng và riêng tư

Bạn có thể xác định các biến trong phần khai báo của mô-đun (ở đầu mô-đun, trên cùng của tất cả các thủ tục con) và đặt phạm vi biến của bạn bằng cách sử dụng Câu lệnh công khai, câu lệnh Dim hoặc câu lệnh Private. Nếu bạn đưa câu lệnh Public trước biến số của bạn, biến số của bạn sẽ sẵn dùng cho tất cả macro trong tất cả các mô-đun trong dự án. Nếu bạn đưa câu lệnh Dim hoặc câu lệnh Private trước biến của bạn, thì biến số của bạn chỉ sẵn dùng cho macro trong mô-đun nơi nó được khai báo.

Để thấy sự khác biệt giữa câu lệnh Công khai và câu lệnh Mờ, hãy làm theo các bước sau:

  1. Lưu và đóng bất kỳ sổ làm việc nào đang mở, rồi mở một sổ làm việc mới.
  2. Khởi động Trình Visual Basic Thảo Tài chính.
  3. Chèn mô-đun vào dự án của bạn.
  4. ________1
  5. Chèn mô-đun khác vào dự án của bạn.
  6. Nhập mã sau đây vào mô-đun này:
    
    
    Sub Macro2() x = x * 3 MsgBox x End Sub
  7. Chạy macro Macro_1a trong mô-đun đầu tiên.
  8. Với biến x được khai báo là "Công cộng x là Số nguyên", cả ba macro trong dự án đều có quyền truy nhập vào giá trị x. Hộp thông báo đầu tiên sẽ hiển thị giá trị là 10. Hộp thông báo thứ hai hiển thị giá trị là 20 (vì x được nhân với 2 trong Macro_1b). Hộp thông báo thứ ba hiển thị giá trị 60 (vì giá trị x đã được thay đổi thành 20 trong Macro_1b và sau đó nó được nhân với 3 trong Macro2).
  9. Thay đổi dòng khai báo trong mô-đun đầu tiên từ: Public x As Integer thành: Dim x As Integer
  10. Chạy macro Macro_1a trang.
  11. Với biến x được khai báo là "Dim x As Integer", chỉ có macro trong mô-đun đầu tiên có quyền truy nhập vào giá trị x. Vì vậy, hộp thông báo đầu tiên sẽ hiển thị giá trị là 10, hộp thông báo thứ hai sẽ hiển thị giá trị là 20, (vì x được nhân với 2 trong Macro_1b) và hộp thông báo thứ ba hiển thị giá trị là 0 (vì Macro2 không nhìn thấy giá trị x và giá trị không không được sử dụng bởi Macro 2).
  12. Thay đổi dòng khai báo trong mô-đun đầu tiên từ: Dim x As Integer thành: Private x As Integer
  13. Chạy macro Macro_1a trang.
  14. Các hộp thư giống nhau được hiển thị bằng cách sử dụng phạm vi Câu lệnh riêng tư như khi chúng sử dụng câu lệnh Dim. Biến x có cùng một phạm vi, nằm riêng trong mô-đun nơi nó được khai báo.

LƯU Ý: Nếu bạn muốn giới hạn phạm vi biến của mình trong mô-đun mà biến được khai báo, hãy sử dụng Privatestatement thay cho câu lệnh Dim. Cả hai đều đạt được hiệu ứng giống nhau nhưng phạm vi sẽ rõ ràng hơn khi bạn đọc mã nếu bạn sử dụng câu lệnh Riêng tư.

Thời hạn của biến số

Thời gian trong khi biến số giữ lại giá trị của nó được gọi là tuổi thọ của nó. Giá trị của một biến số có thể thay đổi trong toàn thời gian của biến nhưng vẫn giữ lại một giá trị. Ngoài ra, khi một biến mất phạm vi, nó không còn có một giá trị.

Khởi tạo giá trị của biến số

Khi bạn chạy macro, tất cả các biến số được khởi tạo thành một giá trị. Biến số được khởi tạo thành không, một chuỗi độ dài biến đổi được khởi tạo thành chuỗi có độ dài bằng 0 ("") và một chuỗi có độ dài cố định sẽ được điền bằng mã ASCII 0. Biến biến thể được khởi tạo thành Trống. Biến Trống được thể hiện bằng số 0 trong ngữ cảnh số và chuỗi độ dài bằng 0 ("") trong ngữ cảnh chuỗi.

Biến mức thủ tục

Nếu bạn có một biến được khai báo trong macro bằng cách dùng câu lệnh Dim, biến số sẽ giữ lại giá trị của nó miễn là macro đang chạy. Nếu macro này gọi là macro khác, giá trị của biến số sẽ được giữ lại (mặc dù không sẵn dùng cho các macro khác) miễn là những macro khác này cũng đang chạy.

Để minh họa cách hoạt động của các biến số ở cấp thủ tục, hãy làm theo các bước sau:

  1. Chèn mô-đun mới vào dự án của bạn.
  2. Nhập cả hai macro sau vào mô-đun này: Tìm Sub Macro1() 'set x as a procedure level variable Dim x As Integer MsgBox "giá trị khởi tạo của x là " & x x = 10 MsgBox "x is " & x 'Dòng tiếp theo sẽ chạy Macro2 Macro2 MsgBox "x is still " & x End Sub Macro Phụ 2() MsgBox "x, như macro2 đã thấy là " & x End Sub
  3. Chạy Macro1.
  4. Bạn nhận được thông báo sau đây: the initialized value of x is 0
  5. Bấm ok, và bạn sẽ nhận được thông báo: x is 10
  6. Bấm vào OK, bạn sẽ nhận được thông báo sau:x, as seen by Macro2 is
  7. Bấm OK.
  8. Macro2 không hiển thị giá trị cho biến x vì biến x cục bộ trong Macro1. Bạn nhận được thông báo sau đây: x is still 10
  9. Bấm vào OK.
  10. Chạy Macro1.

Bạn nhận được cùng một thông báo được mô tả trong bước 3 đến 6 vì ngay khi Macro1 ngừng chạy ở Bước 6, giá trị của biến x đã bị mất. Do đó, khi bạn chạy lại Macro1 ở Bước 7, thông báo đầu tiên sẽ hiện giá trị x là không (giá trị khởi tạo).

Từ khóa tĩnh

Nếu biến mức thủ tục được khai báo bằng từ khóa Tĩnh, biến số sẽ giữ lại giá trị của nó cho đến khi dự án của bạn được đặt lại. Do đó, nếu bạn có một biến tĩnh, thì lần tiếp theo bạn gọi thủ tục của bạn, biến số tĩnh được khởi tạo đến giá trị cuối cùng.

Để xem từ khóa Tĩnh hoạt động như thế nào, hãy làm theo các bước sau:

  1. ________2
  2. Chạy Macro1.
  3. Bạn sẽ nhận được thông báo: the initialized value of x is 0
  4. Bấm vào OK, bạn sẽ nhận được thông báo: "Hãy x is 10
  5. Bấm vào OK.
  6. Chạy Macro1, rồi bạn nhận được thông báo sau: the initialized value of x is 10
  7. Bấm vào OK, bạn sẽ nhận được thông báo sau: x is 20
  8. Bấm vào OK.

Giá trị xuất hiện trong thư là khác nhau lần thứ hai vì biến x được khai báo là biến số tĩnh và biến số giữ lại giá trị của nó sau khi bạn chạy Macro1 lần đầu tiên.

LƯU Ý: Nếu bạn có biến số mức mô-đun, thì tuổi thọ của biến số giống hệt như khi biến số là biến số mức thủ tục tĩnh.

Để xác nhận tuổi thọ của biến ở cấp mô-đun, hãy làm theo các bước sau:

  1. ________3
  2. Chạy Macro1, rồi bạn sẽ nhận được thông báo sau: the initialized value of x is 0
  3. Bấm vào OK, bạn sẽ nhận được thông báo sau: x is 10
  4. Bấm OK,
  5. Chạy Macro1, rồi bạn sẽ nhận được thông báo này: the initialized value of x is 10
  6. Bấm vào OK.
  7. Bạn nhận được thông báo sau đây: x is 20
  8. Bấm vào OK.

Giá trị xuất hiện trong thư là khác nhau lần thứ hai vì biến x được khai báo là biến tĩnh và giữ lại giá trị của nó sau khi bạn chạy Macro1 lần đầu tiên.

Đặt lại dự án để đặt lại biến số

Nếu bạn muốn đặt lại giá trị cho một biến tĩnh hoặc cho biến số cấp mô-đun, hãy bấm vào nút Đặt lại trên Thanh công cụ chuẩn hoặc bấm vào Đặt lại trên menu Chạy.

Nếu bạn thực hiện điều này cho dự án Macro1, rồi chạy lại Macro1,giá trị của biến x được khởi tạo trở về không và bạn nhận được thông báo đầu tiên:

the initialized value of x is 0

Bạn cần thêm trợ giúp?

Bạn muốn xem các tùy chọn khác?

Khám phá các lợi ích của gói đăng ký, xem qua các khóa đào tạo, tìm hiểu cách bảo mật thiết bị của bạn và hơn thế nữa.

Cộng đồng giúp bạn đặt và trả lời các câu hỏi, cung cấp phản hồi và lắng nghe ý kiến từ các chuyên gia có kiến thức phong phú.