Khai báo biến như thế nào để dùng chung được cho các VBAProject?

Liên hệ QC

hung2412

Thành viên tích cực
Tham gia
5/8/08
Bài viết
912
Được thích
239
Giới tính
Nam
Xín chào các bạn GPE!
Tôi có một vấn đề là: Khai báo biến như thế nào để dùng chung được cho các VBAProject?
Untitled03.png
Xin cảm ơn!
 
có 1 cách viết là gôm các macro xử lý tổng thể vào 1 file tổng, các file macro máy con chỉ cần link đến file tổng này gọi hàm hoặc biến thôi, người bảo trì chỉ cần sửa trên macro tổng này, bạn google xem,
 
Upvote 0
Nếu phải làm việc nhiều, và công cụ đó thực hiện các thao tác y hệt và lặp đi lặp lại thì bạn nên để thành add-in;
 
Upvote 0
Quý vị nhầm rồi.
Biến "dùng chung cho các VBAProjects" có nghĩa là tôi có thể khai báo một biến a nào đó, mở file F1 ra, đọc thấy a = 0 (trị mặc định), mở file F2 ra, gán a = 10; quay lại F1 đọc thấy a = 10. Đóng files lại, a vẫn là 10. Muốn reset a lại thì phải đóng Excel, và mở lại, lúc ấy a mới mang trị mặc định.
Túm lại là biến toàn cục Application chứ biến toàn cục thường chỉ có tầm vực Project.

Có hai cách thực hiện:
1. Khai báo chúng trong một project nào đó, đổi tên project, rồi reference project ấy.
2. Dùng kỹ thuật Hidden Names.
 
Upvote 0
Gemini!
Có hai cách chính để khai báo biến để có thể dùng chung cho nhiều VBA project khác nhau trong Excel:

1. Sử dụng Module:

Bước 1: Tạo Module:

  • Mở project VBA mà bạn muốn chứa biến dùng chung.
  • Nhấp chuột phải vào project trong cửa sổ VBA Project Explorer và chọn Insert > Module.
  • Một module mới sẽ được tạo và thêm vào project.
Bước 2: Khai báo biến:
  • Trong module, sử dụng từ khóa Public để khai báo biến dùng chung. Ví dụ:
Mã:
Public tenBien As String
Public giaTri As Double
Hãy thận trọng khi sử dụng các đoạn mã.

Bước 3: Sử dụng biến trong các project khác:
  • Mở project VBA khác mà bạn muốn sử dụng biến dùng chung.
  • Trong cửa sổ VBA Project Explorer, nhấp chuột phải vào project chứa module và chọn Add Reference.
  • Chọn project chứa module biến dùng chung và nhấp OK.
  • Sau đó, bạn có thể truy cập các biến dùng chung bằng tên của chúng trong project của mình. Ví dụ:
Mã:
Sub Main()
    tenBien = "Giá trị mới"
    MsgBox giaTri
End Sub


2. Sử dụng Class:

Bước 1: Tạo Class:

  • Mở project VBA mà bạn muốn chứa biến dùng chung.
  • Nhấp chuột phải vào project trong cửa sổ VBA Project Explorer và chọn Insert > Class.
  • Một class mới sẽ được tạo và thêm vào project.
Bước 2: Khai báo biến:
  • Trong class, sử dụng từ khóa Private để khai báo các biến dùng chung. Ví dụ:
Mã:
Private tenBien As String
Private giaTri As Double


Bước 3: Tạo các thủ tục:
  • Tạo các thủ tục public để truy cập và sửa đổi các biến dùng chung. Ví dụ:
Mã:
Public Property Get TenBien() As String
    TenBien = tenBien
End Property
Mã:
Public Property Let TenBien(Value As String)
    tenBien = Value
End Property
Mã:
Public Property Get GiaTri() As Double
    GiaTri = giaTri
End Property
Mã:
Public Property Let GiaTri(Value As Double)
    giaTri = Value
End Property


Bước 4: Sử dụng class trong các project khác:
  • Mở project VBA khác mà bạn muốn sử dụng biến dùng chung.
  • Trong cửa sổ VBA Project Explorer, nhấp chuột phải vào project chứa class và chọn Add Reference.
  • Chọn project chứa class biến dùng chung và nhấp OK.
  • Sau đó, bạn có thể tạo một thể hiện của class và sử dụng các thuộc tính và phương thức của nó để truy cập và sửa đổi các biến dùng chung. Ví dụ:
Mã:
Sub Main()
    Dim bienChung As New TenBienClass
    bienChung.TenBien = "Giá trị mới"
    MsgBox bienChung.GiaTri
End Sub


Lưu ý:
  • Khi sử dụng module, bạn cần đảm bảo rằng module được đặt trong cùng một thư mục với các project VBA khác mà bạn muốn sử dụng nó.
  • Khi sử dụng class, bạn cần đảm bảo rằng project chứa class được reference trong các project VBA khác mà bạn muốn sử dụng nó.
  • Bạn nên sử dụng cách nào phù hợp nhất với nhu cầu của bạn. Nếu bạn chỉ cần khai báo một vài biến dùng chung, thì module là một lựa chọn tốt. Nếu bạn cần khai báo nhiều biến dùng chung hoặc cần kiểm soát truy cập vào các biến, thì class là một lựa chọn tốt hơn.
Ngoài ra:
  • Bạn có thể sử dụng các biến toàn cầu (application-level variables) để khai báo biến dùng chung cho tất cả các project VBA trong một instance Excel. Tuy nhiên, cách này không được khuyến khích vì nó có thể dẫn đến xung đột và lỗi trong chương trình của bạn.
  • Bạn cũng có thể sử dụng file Excel bên ngoài để lưu trữ và truy cập các biến dùng chung. Tuy nhiên, cách này có thể gây tốn thời gian và khó quản lý hơn.
Hy vọng thông tin này hữu ích! Cảm ơn Gemini!
 
Upvote 0
Web KT
Back
Top Bottom