Nên khai báo Public hay Private đối với các hàm API

Liên hệ QC

Miccpro

Thành viên thường trực
Tham gia
9/12/10
Bài viết
236
Được thích
10
Mã:
Public Type var64
  #If Win64 Then
      Long As LongPtr
  #Else
      Long As Long
  #End If
End Type
#If VBA7 Then 'Office 64-bit
    Public Declare PtrSafe Function FindWindowA Lib "user32" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long
#Else
    Public Declare Function FindWindowA Lib "user32" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long
#End If
Em muốn hỏi các anh chị là: Đối với các hàm như trên, em sử dụng vài (hoặc nhiều) lần tùy trường hợp cho file của mình. Thì em nên tạo một module khai báo riêng rồi khai báo "Public" hay module nào cần sử dụng các hàm trên thì em lại khai báo là "Private" ?
Em xin cảm ơn !
 
Bình thường thì chỗ khác nhau giữa public và private là để tránh đụng chạm tên:
Với các hàm/sub/biến, nếu Module1 chứa hàm ConHam(), qua Module2 cũng chứa hàm ComHam() thì bạn phải biết phân biệt thằng nào.

Và để không bị bất ngờ với các public:
Ở Module1 khai biến x1 là public rồi thì ở các modules() khác, nếu không khai lại x1, code sẽ tự động dùng x1 của Module1. Những gì gán vào x1 sẽ ảnh hưởng đến các code khác cũng dùng x1.
Nếu Module1 khai báo x1 là private thì không phải lo chuyện này. Các Modules khác dùng x1 sẽ được VBA tự đọng cho là biến nôi. (Trừ phi có một Module_x nào đó khai x1 là public thì các modules khác sẽ ùn ùn vào đấy).

Bạn phải biết mình cần lấy gì và cần tránh gì mà tự chọn.
Thứ hai, nếu bạn có nhiều modules thì phải biết các gắn tiền tố không gian tên (namespace) để chọn các đồ Public
 
Lần chỉnh sửa cuối:
Upvote 0
Thứ hai, nếu bạn có nhiều modules thì pahir biết các gắn tiền tố không gian tên (namespace) để chọn các đồ Public
Cái này chủ động ngay từ lúc ban đầu ý bác. Cháu gặp 1 anh bạn. Có 1 sub sài hàm format của vba rất ngon. Một ngày đẹp trời anh ta quyết định viết thêm 1 hàm có tên là format vào ngay cái modul kia. Code chạy lỗi,báo sai tham số. Mò nguyên 1 ngày mới biết nguyên nhân.
 
Upvote 0
Web KT
Back
Top Bottom