Khi các bạn viết một Procedure (có thể là Sub-Thủ tục hoặc Function-Hàm) chúng ta phải sử dụng cố định các tham số. Điều này sẽ làm cho hàm và thủ tục của các bạn kém linh động.
Ví dụ: Hàm tính tổng
Ở đây chúng ta thấy hàm này có hai tham số cố định là sng1 và sng2.
Trong một số trường hợp, các bạn có thể dùng khai báo Optional nhằm cho phép người dùng có thể nhập vào hay không.
Ví dụ:
Khi khai báo dùng Optional như đối với hàm ở trên, người sử dụng có thể hay không bắt buộc nhập vào phép toán. Nếu người dùng không nhập vào thì phép tính cộng (+) sẽ được dùng.
Vấn đề ở đây là làm sao chúng ta có thể kiểm tra xem người dùng có nhập vào hay không?
Có bạn sẽ trả lời, tôi dùng hàm IsMissing.
Câu trả lời ở trên sẽ là đúng và sai !
Tại sao là đúng? Và tại sao sai?
Đúng, hàm IsMissing nhằm kiểm tra xem người dùng có nhập vào hay không. Nhưng hàm này chỉ áp dụng nếu bạn khai báo kiểu Variant. Trong trường hợp các kiểu dữ liệu khác hàm sẽ trả về False.
Chú ý:
_ Khai báo Optional phải đặt cuối cùng. Ví dụ ta không thể đặt khai báo Optional như thế này:
Khai báo như trên là sai.
_ Khai báo Optional không được dùng cho User Defined Types (biến kiểu người dùng-UTDs).
_ Vậy chúng ta có thể dùng nhiều khai báo Optional hay không?
Xin thưa, được, nhưng bạn chú ý cho nguyên tắc ở trên. Tức là khai báo Optional phải đặt cuối.
Vbavn
Ví dụ: Hàm tính tổng
Mã:
Function [B]TinhTong[/B](sng1 [B]As [/B]Single, sng2 [B]As [/B]Single) [B]As [/B]Single
Trong một số trường hợp, các bạn có thể dùng khai báo Optional nhằm cho phép người dùng có thể nhập vào hay không.
Ví dụ:
Mã:
Function [B]CongTruNhanChia[/B](sng1 [B]As [/B]Singel, sng2 [B]As [/B]Single, [COLOR=Blue][B]Optional [/B][/COLOR]PhepToan As String="+") As Single
Vấn đề ở đây là làm sao chúng ta có thể kiểm tra xem người dùng có nhập vào hay không?
Có bạn sẽ trả lời, tôi dùng hàm IsMissing.
Câu trả lời ở trên sẽ là đúng và sai !
Tại sao là đúng? Và tại sao sai?
Đúng, hàm IsMissing nhằm kiểm tra xem người dùng có nhập vào hay không. Nhưng hàm này chỉ áp dụng nếu bạn khai báo kiểu Variant. Trong trường hợp các kiểu dữ liệu khác hàm sẽ trả về False.
Chú ý:
_ Khai báo Optional phải đặt cuối cùng. Ví dụ ta không thể đặt khai báo Optional như thế này:
Mã:
Function CongTruNhanChia([B][COLOR=Blue]Optional [/COLOR][/B]PhepToan As String="+", sng1 As Single, sng2 As Single) As Single
_ Khai báo Optional không được dùng cho User Defined Types (biến kiểu người dùng-UTDs).
_ Vậy chúng ta có thể dùng nhiều khai báo Optional hay không?
Xin thưa, được, nhưng bạn chú ý cho nguyên tắc ở trên. Tức là khai báo Optional phải đặt cuối.
Vbavn
Chỉnh sửa lần cuối bởi điều hành viên: