Chúng ta có bài toán như sau:
Người dùng nhập tên cột là "A" hoặc "AA", chúng ta mong muốn nhận được tên cột theo số là 1 hoặc 27.
Kết quả:
Hàm timdiachicot có giá trị trả về là 0 nếu người dùng nhập tên cột sai. Ví dụ người dùng nhập vào là "XFDBB" thì hàm sẽ trả về là 0.
Vì lý do ấy, cho nên trong hàm sử dụng On Error Resume Next, tức là phớt lờ lỗi, nếu xảy ra lỗi. Tuy nhiên chúng ta không cần lo lắng, vì trong trường hợp này, chúng ta hoàn toàn kiểm soát được lỗi.
Bây giờ nếu tôi cố tình tạo ra lỗi ở trên thủ tục test, chương trình vẫn báo lỗi bình thường. Cụ thể tôi sửa lại code cho thủ tục test như sau:
Kết quả:
Video thuyết minh:
Người dùng nhập tên cột là "A" hoặc "AA", chúng ta mong muốn nhận được tên cột theo số là 1 hoặc 27.
Mã:
'INPUT: ex: AA
'OUTPUT: chi ra cot bang so
'Neu ham co gia tri = 0 tuc la dang bi loi, dia chi cot nhap sai.
Function timdiachicot(ByVal s As String) As Integer
Dim i As Integer
On Error Resume Next
timdiachicot = 0
i = Range(s & "1").Column
timdiachicot = i
End Function
Sub test()
MsgBox timdiachicot("AA")
End Sub
Bạn cần đăng nhập để thấy hình ảnh
Hàm timdiachicot có giá trị trả về là 0 nếu người dùng nhập tên cột sai. Ví dụ người dùng nhập vào là "XFDBB" thì hàm sẽ trả về là 0.
Vì lý do ấy, cho nên trong hàm sử dụng On Error Resume Next, tức là phớt lờ lỗi, nếu xảy ra lỗi. Tuy nhiên chúng ta không cần lo lắng, vì trong trường hợp này, chúng ta hoàn toàn kiểm soát được lỗi.
Bây giờ nếu tôi cố tình tạo ra lỗi ở trên thủ tục test, chương trình vẫn báo lỗi bình thường. Cụ thể tôi sửa lại code cho thủ tục test như sau:
Mã:
Sub test()
Dim s2 As String
s2 = "XFDAA1"
MsgBox timdiachicot("AA")
Msgbox Range(s2).Column
End Sub
Bạn cần đăng nhập để thấy hình ảnh
Video thuyết minh:
Bạn cần đăng nhập để thấy đa phương tiện