Biến Static trong VBA là biến được lưu bộ nhớ toàn cục, sẽ không bị khởi tạo lại giá trị khi tạo biến

Để hiển bản chất của biến Static trong VBA chúng ta xem qua ví dụ

Ví dụ 1: biến VBA Access

' Nút lệnh khi click vào Command1
Private Sub Command1_Click()

    Dim b1 As Integer
    Dim b2 As Integer
    
    b1 = b1 + 1
    b2 = b2 + 1
    MsgBox "Bien B1: " & b1 & ", B2: " & b2


End Sub

' Nút lệnh khi click vào Command2
Private Sub Command2_Click()

     MsgBox "Bien B1: " & b1 & ", B2: " & b2
     
End Sub

Kết luận:
Chúng ta click vào nút lệnh Command1 thì biến b1 và b2 được khởi tạo giá trị là 1 và + thêm 1,
Nhưng khi click qua nút lệnh Command2 thì giá trị biến b1 và b2 không còn.


* Qua ví dụ này ta thấy vòng đời của biến b1,b2 chỉ tồn tại trong Sub khai báo, kết thúc khi lệnh chạy đến End Sub
Private Sub Command1_Click()
....
End Sub


Ví dụ 2: biến VBA Access

' Biến khai báo ngoài sub
Dim b1 As Integer
Dim b2 As Integer
Private Sub Command1_Click()
    
    b1 = b1 + 1
    b2 = b2 + 1
    MsgBox "Bien B1: " & b1 & ", B2: " & b2

End Sub

Private Sub Command2_Click()

     MsgBox "Bien B1: " & b1 & ", B2: " & b2
     
End Sub

Kết luận:
Chúng ta click vào nút lệnh Command1 thì biến b1 và b2 được khởi tạo giá trị là 1 và + thêm 1,
Khi click qua nút lệnh Command2 thì giá trị biến b1 và b2 lấy từ
Command1_Click.
Click vào lại
Command1 thì giá trị lại tăng lên 1, giá trị vẫn giữ giữa các sự kiện nút lệnh.

* Qua ví dụ này ta thấy vòng đời của biến b1,b2 tồn tại từ lúc mở FORM cho đến khi tắt Form
- Sau khi tạo biến xong, ta tắt form và mở lại giá trị biến VBA sẽ về 0

  Ví dụ 3: biến VBA Access

 
   Private Sub Command1_Click()
 
    
Dim b1 As Integer
    Static b2 As Integer

    b1 = b1 + 1
    b2 = b2 + 1
    MsgBox "Bien B1: " & b1 & ", B2: " & b2

End Sub

Private Sub Command2_Click()

     MsgBox "Bien B1: " & b1 & ", B2: " & b2
     
End Sub

Kết luận:
Chúng ta click vào nút lệnh Command1 thì biến b1 được +1 và b2 +1
Khi click qua nút lệnh Command2 thì giá trị biến b1 và b2 lại = rỗng

Click vào lại
Command1 thì giá trị b1 khởi tạo lại, còn biến b2 (có kiểu STATIC) được tăng lên + (cộng dồn từ lần click trước)

 

* Qua ví dụ này ta thấy vòng đời của biến b2 là kiểu static, tồn tại trong phạm vi của Command1_Click nhưng khi chạy lại lênh Command2_Click thì biến b2 vẫn giữ giá trị nhưng không khởi tại lại như biến b1

 

Cảm ơn đã xem, đã có 213 lượt xem.
Thông báo:

 

Học lập trình vba access

Học lập trình VBA access khác
Tag tìm kiếm:

bai 15: bien static trong vba access

Thông tin liên hệ

Zalo 0935 999617

Zalo 0972 13 14 19