Như ta đã thấy trong cú pháp của hầu hết các lệnh VB đều có chứa thành phần [Statement]+. Theo trình tự thi hành thông thường, các lệnh bên trong này sẽđược thực thi tuần tự, hết lệnh này đến lệnh khác cho đến lệnh cuối, lúc này thì việc thi hành lệnh cha mới có thể kết thúc. Tuy nhiên trong 1 vài trạng thái thi hành đặc biệt, ta muốn thoát ra khỏi lệnh cha đột ngột chứ không muốn thực thi hết các lệnh con trong danh sách. Để phục vụ yêu cầu này, VB cung cấp lệnh Exit với cú pháp sau đây :
Exit [For |Do |Property |Sub |Function]
Lưu ý VB cho phép dùng Exit để thoát khỏi trực tiếp ra nhiều cấp. VB không cung cấp lệnh Exit If và Exit While để thoát khỏi lệnh If và lệnh While ⇒ dùng lệnh Do ... Loop thay thế lệnh While và/hoặc lệnh Goto (được trình bày sau).
Chương 8 : Các lệnh thực thi VB
Để thấy việc dùng các lệnh lồng nhau và yêu cầu cần thoát khỏi đột ngột 1 cấp điều khiển nào đó, ta hãy xem thủ tục sau, nó cho phép in ra tất cả các font chữ mà có thể dùng để hiển thị lên màn hình lẫn in ra máy in.
Private Sub Form_Click()
Dim objSFont As Object, objPFont As Object ' duyệt từng font màn hình
For Each objSFont In Screen.Fonts() ' duyệt từng font máy in
For Each objPFont In Printer.Fonts() If objSFont = objPFont Then
Print objSfont End If
Next objPFont Next objSFont End Sub
Khoa Công nghệ Thông tin Trường ĐH Bách Khoa Tp.HCM
Môn : Tin học
Slide 214
Quan sát lệnh If ta thấy rằng điều kiện chỉđúng tối đa 1 lần trong vòng lặp objPFont, do đó khi đã thỏa điều kiện rồi thì ta nên thoát khỏi vòng lặp này ngay (để thời gian chạy ít hơn ⇒hiệu quả hơn).
Private Sub Form_Click()
Dim objSFont As Object, objPFont As Object ' duyệt từng font màn hình
For Each objSFont In Screen.Fonts() ' duyệt từng font máy in
For Each objPFont In Printer.Fonts() If objSFont = objPFont Then
Print objSfont
Exit For 'thoát đột ngột khỏi vòng For trong cùng End If
Next objPFont Next objSFont End Sub
Vấn đề thoát đột ngột khỏi cấp điều khiển (tt)
Chương 8 : Các lệnh thực thi VB
Cũng thí dụở slide trước, nhưng nếu ta chỉ muốn in tên font chữđầu tiên được dùng bởi cả màn hình và máy in, thì ta phải dùng lệnh Exit Sub sau khi đã in tên font đầu tiên này.
Private Sub Form_Click()
Dim SFont As objObject, objPFont As Object ' duyệt từng font màn hình
For Each objSFont In Screen.Fonts() ' duyệt từng font máy in
For Each objPFont In Printer.Fonts() If objSFont = objPFont Then
Print objSfont
Exit Sub 'thoát đột ngột khỏi thủ tục End If
Next objPFont Next objSFont End Sub