Khai báo Optional (1 người xem)

Liên hệ QC

Người dùng đang xem chủ đề này

levanduyet

Hãy để gió cuốn đi.
Thành viên danh dự
Tham gia
30/5/06
Bài viết
1,798
Được thích
4,706
Giới tính
Nam
Trong VBA, đôi lúc chúng ta phải dùng Optional để khai báo biến trong hàm hoặc thủ tục.

Thông thường các bạn dùng hàm IsMissing để kiểm tra.
Tôi lấy ví dụ sau:

Khai báo 1:
Mã:
Sub SendQuerytoExcel(strQuery As String, Optional strXLSName As Variant, Optional strSheetName As Variant)

Khai báo 2:
Mã:
Sub SendQuerytoExcel(strQuery As String, Optional strXLSName As String, Optional strSheetName As String)

Vậy thì khi dùng thủ tục trên nếu các bạn dùng IsMissing, nếu người dùng không nhập vào thì chuỗi sẽ là chuỗi rỗng. Tức là "". Như vậy hàm trả về False.
Vậy với hai khai báo trên, khai báo đầu tiên sẽ hay hơn.

Theo Tony,

Lê Văn Duyệt
 
- Dùng IsMising cho những biến có kiểu Variant
- Nếu dùng biến có kiểu xác định nhưng String, Long,... thì ko dùng IsMissing mà dùng:

Private Sub MySub(Optional byval strText As String = "", Optional ByVal lngLongValue As Long = -1)

If Len(strText) = 0 then Goto Done
'// hoặc
If lngLongValue = -1 then Goto Done
....

Chú ý: Kiểu Variant là tốn memory nhất. Vì thế phải cân nhắc để đánh đổi khi viết code nhé
 
Tôi xin bổ sung 1 chút:

Option đặt trước tên biến trong trường hợp biến đó có thể được sử dụng hay bỏ qua.
Với cách khai báo thông thường, biến bắt buộc phải khai báo. không thủ tục sẽ bị báo lỗi.
 
Web KT

Bài viết mới nhất

Back
Top Bottom