Trong tất cả các ngôn ngữ lập trình, chúng ta có các chỉ định truy cập biến xác định từ nơi một biến đã xác định có thể được truy cập. Excel VBA không phải là ngoại lệ. VBA cũng có các chỉ định phạm vi. Các chỉ định phạm vi này có thể được sử dụng để đặt khả năng hiển thị / phạm vi của một biến trong Excel VBA.

Trong Excel VBA, chúng ta có ba loại chỉ định phạm vi:

  1. Mức độ thủ tục. Riêng tư – Cấp mô-đun. Công khai – Mức dự án === Mức thủ tục VBA Phạm vi thay đổi Các biến được khai báo trong chương trình con, chỉ có thể được truy cập trong thủ tục / hàm đó. Chúng có phạm vi mức thủ tục. Chúng thường được khai báo với từ khóa Dim. Nếu mô-đun là tùy chọn ngầm định thì biến đó có thể chưa được khai báo, chỉ được sử dụng trực tiếp.

Trong ví dụ dưới đây, chúng tôi có một kiểm tra phạm vi chương trình con có biến x và y. Khi chúng ta chạy chương trình con đầu tiên, chương trình này chạy hoàn hảo và in ra tổng của X và Y

Option Explicit

Sub scopeTest()

Dim x, y As Integer ' Procedure level variable in VBA

x = 2

y = 3

Debug.Print x + y

End Sub

Sub sum()

x = 5

y = 7

Debug.Print x + y

End Sub

Nhưng khi bạn chạy chương trình con tính tổng, nó sẽ xuất hiện một lỗi là biến không được khai báo. Tại sao? Bởi vì X và Y là riêng tư đối với phạm vi thủ tụcTest và tổng chương trình con không có quyền truy cập vào chúng.

Do đó sub gặp lỗi.

image

VBA Private Variable- Module Level Scope Khi bạn muốn khai báo một biến cần được truy cập trong toàn bộ mô-đun, thì bạn khai báo biến đó là private trên đầu mô-đun, trước bất kỳ chương trình con hoặc hàm nào.

Các biến được khai báo trước bất kỳ chương trình con nào, trong mô-đun, theo mặc định là Riêng tư. Ngay cả khi bạn khai báo chúng với từ khóa Dim. Nhưng cụ thể hơn, bạn nên sử dụng từ khóa Riêng tư.

Hai thủ tục dưới đây nằm trong cùng một mô-đun, mô-đun 1.

Option Explicit

'Module level variable in VBA. Both variables x and y are private to this module. and

'can be accessed from any sub or function within this module.

Dim x As Integer

Private y As Integer

Sub scopeTest() 'This can be accessed from any module in the project

x = 2

y = 3

Debug.Print x + y

End Sub

Private Sub sum() ' This can't be accessed from other modules

x = 5

y = 7

Debug.Print x + y

End Sub

Hai hàm trên sẽ chạy hoàn toàn tốt vì biến x và y là các biến riêng của mô-đun này.

Quan trọng: Các giá trị cuối cùng được lưu trữ trong x và y được giữ lại cho đến khi toàn bộ mô-đun. Nếu chúng ta chạy sub scopeTest trước và không khởi tạo các giá trị của x và y trong sub sum và chạy nó, thì giá trị ban đầu của x và y sẽ không thay đổi .

Chương trình con dưới đây được định nghĩa trong một mô-đun riêng biệt, mô-đun 2. Khi tôi cố gắng truy cập biến từ một mô-đun khác, thủ tục (hoặc hàm) VBA gặp lỗi.

image

Nhưng nếu tôi cố gắng gọi tổng chương trình con từ mô-đun 1 trong mô-đun 2, điều này hoạt động hoàn hảo. Để đặt hàm và chương trình con của bạn ở chế độ riêng tư đối với mô-đun, hãy sử dụng từ khóa Riêng tư trước hàm con và hàm.

Lưu ý: – Các biến được khai báo trước bất kỳ chương trình con hoặc hàm nào, trong một mô-đun là riêng tư đối với mô-đun theo mặc định. Bạn có thể sử dụng Privatekeyword. Nhưng các chức năng và chương trình con là công khai theo mặc định và có thể được truy cập bởi bất kỳ mô-đun nào trong một dự án. Để đặt các hàm và chương trình con ở chế độ riêng tư đối với mô-đun, bạn phải sử dụng từ khóa Riêng tư . === Biến công khai- Phạm vi mức dự án Như chúng ta đã học trong các ví dụ trên, hàm và chương trình con theo mặc định là công khai và có thể được truy cập từ bất kỳ mô-đun nào nhưng các biến thì không. Để làm cho một biến có thể truy cập từ bất kỳ mô-đun nào trong Excel VBA, chúng tôi sử dụng từ khóa Public. * Để khai báo một biến public trong một dự án, bạn đã khai báo chúng trên đầu mô-đun, trước bất kỳ hàm hoặc chương trình con nào có từ khóa public. Đoạn mã dưới đây được viết trong mô-đun 1.

Option Explicit

'Project level variable in VBA.

Public x As Integer

Public y As Integer

Public Sub scopeTest() 'This can be accessed from any module in the project

x = 2

y = 3



End Sub

Private Sub sum() ' This can't be accessed from other modules

x = 5

y = 7

Debug.Print x + y

End Sub

Và chương trình con này nằm trong một module khác, module 2.

Option Explicit

Sub mul()

Call scopeTest

'Call sum         ' it won't work as it is private to the module 1

Debug.Print x * y

End Sub

Lần này nó chạy hoàn hảo.

Đầu tiên tôi đã gọi chương trình con scopeTest. Vì scopeTest là public nên nó được gọi. Nó khởi tạo các giá trị của x và y. Tiếp theo, chúng ta nhân x và y. Vì chương trình con scopeTest đã khởi tạo nó với giá trị 2 và 3 nên kết quả chúng ta nhận được là 6.

Vì vậy, các bạn, đây là cách bạn có thể sử dụng các chỉ định phạm vi biến trong Excel để kiểm soát khả năng hiển thị của các biến, hàm và chương trình con trong các dự án Excel VBA.

Tôi đã cố gắng giải thích các chỉ định truy cập của VBA theo cách đơn giản nhất mà tôi có thể. Tôi hy vọng nó đã được giải thích. Nếu bạn có bất kỳ nghi ngờ nào về bài viết này hoặc bất kỳ nghi ngờ nào khác liên quan đến VBA, hãy hỏi tôi trong phần nhận xét bên dưới. Tôi sẽ rất vui khi ở đây từ bạn.

Bài viết liên quan:

Bài viết phổ biến:

Chức năng Countif là cần thiết để chuẩn bị bảng điều khiển của bạn.