Cách Sử Dụng Biến Số Trong Excel Thủ Tục Con Của Bộ Visual Basic ...

Bỏ qua để tới nội dung chính Đăng nhập với Microsoft Đăng nhập hoặc tạo một tài khoản. Xin chào, Chọn một tài khoản khác. Bạn có nhiều tài khoản Chọn tài khoản bạn muốn đăng nhập.

Giới thiệu

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 10the 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. thành: x = "error"

  9. 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:

kiểu dữ liệu biến thường

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:

Sub Variable_Test() Dim x, y x = "string" y = 1.23 MsgBox "the value of x is " & x & _ Chr(13) & "the value of y is " & y End Sub

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. Type the following code into this module: Public x As Integer Sub Macro_1a() x = 10 MsgBox x Macro_1b End Sub Sub Macro_1b() x = x * 2 MsgBox x Macro2 End Sub
  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. Change the code in Macro1 to: Sub Macro1() 'set x as a procedure level variable Static x As Integer MsgBox "the initialized value of x is " & x x = x + 10 MsgBox "x is " & x End Sub
  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. Change the code in the module that contains Macro1 to the following: Dim x As Integer 'create a module-level variable Sub Macro1() MsgBox "the initialized value of x is " & x x = x + 10 MsgBox "x is " & x End Sub
  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

Facebook LinkedIn Email

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ộng đồng

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.

Lợi ích đăng ký Microsoft 365

Nội dung đào tạo về Microsoft 365

Bảo mật Microsoft

Trung tâm trợ năng

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ú.

Hỏi Cộng đồng Microsoft

Cộng đồng Kỹ thuật Microsoft

Người dùng Nội bộ Windows

Người dùng nội bộ Microsoft 365

Thông tin này có hữu ích không?

Có Không (Gửi ý kiến phản hồi cho Microsoft để chúng tôi có thể trợ giúp.) Bạn hài lòng đến đâu với chất lượng dịch thuật? Điều gì ảnh hưởng đến trải nghiệm của bạn? Đã giải quyết vấn đề của tôi Hướng dẫn Rõ ràng Dễ theo dõi Không có thuật ngữ Hình ảnh có ích Chất lượng dịch thuật Không khớp với màn hình của tôi Hướng dẫn không chính xác Quá kỹ thuật Không đủ thông tin Không đủ hình ảnh Chất lượng dịch thuật Bất kỳ thông tin phản hồi bổ sung? (Không bắt buộc) Gửi phản hồi Khi nhấn gửi, phản hồi của bạn sẽ được sử dụng để cải thiện các sản phẩm và dịch vụ của Microsoft. Người quản trị CNTT của bạn sẽ có thể thu thập dữ liệu này. Điều khoản về quyền riêng tư.

Cảm ơn phản hồi của bạn!

×

Từ khóa » Gán Giá Trị Cho Biến X được Khai Báo Kiểu Dữ Liệu Byte