Chương trình được dịch theo từng dòng lệnh. Mỗi khi người lập trình nhấn F8 thì chương trình sẽ thực thi một dòng lệnh, cứ như thế cho đến khi kết thúc chương trình. Nếu tại một dòng lệnh có lời gọi đến chương trình con khác thì khi tiếp tục thực hiện với Step Into, con trỏ biên dịch sẽ được nhảy đến dòng đầu tiên của chương trình con được gọi. Chạy từng bước với khối lệnh (Step Over) Nút lệnh: . Phím tắt: SHIFT+F8....
CHƯƠNG III: CƠ BẢN VỀ NGƠN NGỮ LẬP TRÌNH VISUAL BASIC Chạy từng bước (Step Into) Nút lệnh: Phím tắt: F8 Chương trình dịch theo dòng lệnh Mỗi người lập trình nhấn F8 chương trình thực thi dòng lệnh, kết thúc chương trình Nếu dịng lệnh có lời gọi đến chương trình khác tiếp tục thực với Step Into, trỏ biên dịch nhảy đến dịng chương trình gọi Chạy từng bước với khối lệnh (Step Over) Nút lệnh: Phím tắt: SHIFT+F8 Phương pháp tương tự chạy bước (Step Into) việc thực thi chương trình coi thực thi dịng lệnh Vì chương trình có lời gọi chương trình chương trình thực thi lệnh trỏ biên dịch sau nhảy tới dịng lệnh chương trình Chạy ra ngồi chương trình con (Step Out) Nút lệnh: Phím tắt: CTRL+SHIFT+F8 Nếu trỏ biên dịch chương trình con, lệnh biên dịch Step Out dịch tồn lệnh cịn lại chương trình đưa trỏ lệnh tới vị trí tiếp sau vị trí có lời gọi chương trình Chạy tới vị trí con trỏ chuột (Run to Cursor) Nút lệnh: Phím tắt: CTRL+F8 Chạy từ vị trí trỏ biên dịch tới vị trí có trỏ soạn thảo Phương pháp thường dùng người lập trình muốn thực thi qua tồn khối lệnh lặp đến dịng lệnh mà cần quan tâm Tạo điểm dừng (Break point) khi chạy chương trình Nút lệnh: Phím tắt: F9 Với phương pháp này, người lập trình thực thi chương trình, trình biên dịch dừng lại vị trí dịng lệnh tương ứng đánh dấu trước Để tạo điểm dừng cho dòng lệnh, đưa trỏ soạn thảo chọn dòng lệnh tương ứng nhấn phím F9 Vị trí trỏ biên dịch Điểm dừng (Break point) 93 Nếu muốn xoá điểm dừng cho dòng lệnh, đưa trỏ soạn thảo đến dịng lệnh có điểm dừng nhấn phím F9 Nếu muốn xoá hết tất điểm dừng tạo, nhấn phím tắt CTRL+SHIFT+F9 14.2.3 Cửa sổ trợ giúp gỡ rối Ngoài việc gỡ rối sử dụng phương pháp thực thi chương trình, VBAIDE cịn hỗ trợ người lập trình cơng cụ dùng để thử nghiệm dịng lệnh kiểm sốt biến chương trình Đây cơng cụ hữu ích giúp người lập trình theo dõi từ phát lỗi chương trình, lỗi phát sinh giải thuật Cửa sổ trung gian (Immediate Window). Để hiển thị cửa số trung gian, VBAIDE chọn trình đơn View Ư Immediate window, sử dụng phím tắt CTRL+G: Hình III-28: Cửa sổ trung gian Với cửa sổ trung gian, người dùng có thể: Ø Gõ dịng lệnh vào nhấn ENTER để thực thi dịng lệnh trực tiếp từ cửa số trung gian Ø Hiển thị giá trị biểu thức lên cửa sổ rình gỡ rối Để hiển thị giá trị biểu thức, cửa sổ trung gian gõ “?Biểu_Thức” nhấn phím ENTER Ø Người lập trình in giá trị biểu thức cửa sổ trung gian từ mã lệnh chương trình sử dụng cú pháp: Debug Print Ø Thay đổi giá trị biến chạy chương trình từ cửa sổ trung gian Chẳng hạn chương trình thực thi có biến a, người lập trình thay đổi giá trị biến a thành cách gõ a=5 cửa sổ trung gian nhấn phím ENTER Cửa sổ theo dõi (Watch Window). Để hiển thị cửa sổ theo dõi, VBA IDE chọn trình đơn View Ö Watch Window Hình III-29: Cửa sổ theo dõi Cửa sổ thường sử dụng để theo dõi biến đổi biến biểu thức q trình mã lệnh thực thi Ngồi ra, cửa sổ theo dõi, người lập trình thay đổi giá trị cho biến lúc thực thi chương trình Cần lưu ý giá trị biến/biểu thức cần theo dõi hiển thị trình biên dịch thực thi dòng lệnh nằm phạm vi hiệu lực biến/biểu thức Ví dụ biến a chương trình VD1 hiển thị giá trị 94 CHƯƠNG III: CƠ BẢN VỀ NGƠN NGỮ LẬP TRÌNH VISUAL BASIC cửa sổ theo dõi trình biên dịch thực thi dịng lệnh nằm chương trình VD1 Để thêm biểu thức vào danh sách biểu thức theo dõi cửa sổ Watch, thực theo bước sau: Trong VBA IDE, chọn trình đơn Debug Ö Add Watch để hiển thị hộp thoại Add Watch Nhập biểu thức cần theo dõi mục Expression Chọn tên mơ-đun tên chương trình con, nơi có chứa biến/biểu thức cần theo dõi mục Module Procedure Nhấn ENTER chọn OK để thêm vào cửa sổ theo dõi GỢI Ý Để thực bước , trước hiển thị sổ theo dõi, cần đánh dấu chọn biến/biểu thức theo dõi Khi đó, mục Expression, Module Procedure tự động điền giá trị tương ứng Hình III-30: Thêm biểu thức vào cửa sổ theo dõi 14.3 Bẫy lỗi VBAIDE Như đề cập trên, gặp phải lỗi phát sinh lúc thực thi chương trình gây kết khơng thể tiên đốn chương trình dừng lại hiển thị thơng báo lỗi phức tạp Nếu đứng phía người sử dụng chương trình hộp thoại thường gây lúng túng sử dụng chương trình Để tránh tượng vậy, người lập trình cần phải thực kỹ thuật bẫy lỗi viết chương trình Bẫy lỗi thực chất viết đoạn mã lệnh chặn thông báo lỗi mặc định hệ thống hướng dẫn chương trình cách thức xử lý lỗi chặn Các đoạn chương trình xử lý lỗi cịn gọi xử lý lỗi (error-handler) VBA có cung cấp câu lệnh nhằm giúp người lập trình thực bẫy lỗi chương trình 14.3.1 Câu lệnh On Error 95 Câu lệnh On Error thực bật chế độ bẫy lỗi chương trình xác định nơi thực xử lý lỗi lỗi xảy Để tắt chế độ bẫy lỗi, người lập trình dùng câu lệnh Các dạng cú pháp câu lệnh sau: Cú pháp Mô tả On Error GoTo Bật chế độ bẫy lỗi Khi có lỗi xảy ra, chương trình tự động nhảy đến dịng lệnh có nhãn để tiếp tục thực thi mã lênh Đây nơi chứa xử lý lỗi chương trình Cần lưu ý phần mã lệnh có nhãn phải nằm chương trình với câu lệnh On Error Khi dùng bẫy lỗi kiểu này, trước nhãn thường có lệnh Exit Sub Exit Function (tuỳ thuộc chương trình bẫy lỗi) nhằm tránh thực thi xử lý lỗi trường hợp lỗi không xảy On Error Resume Next Bật chế độ bẫy lỗi Khi có lỗi xảy ra, chương trình tự động nhảy đến dịng lệnh sau dòng lệnh gây lỗi để tiếp tục thực thi mã lệnh Câu lệnh thường sử dụng có câu lệnh truy xuất đến đối tượng Để nắm rõ lỗi phát sinh, câu lệnh thường sử dụng kết hợp với đối tượng Error (xem thêm mục “Đối tượng Err” trang 97) On Error GoTo Tắt chế độ bẫy lỗi Khi thực dòng lệnh này, lỗi phát sinh trước xố đồng thời kể từ sau dịng lệnh này, lỗi khơng chặn lại xử lý nữa, chương trình ngưng hoạt động có lỗi thực thi xảy Khi sử dụng câu lệnh On Error GoTo , trước nhãn thường có lệnh Exit Sub Exit Function (tuỳ thuộc chương trình bẫy lỗi) nhằm tránh thực thi xử lý lỗi trường hợp lỗi khơng xảy Vì vậy, khn mẫu chương trình có xử lý lỗi tham khảo thao đoạn mã lệnh sau: Sub InitializeMatrix(Var1, Var2, Var3, Var4) On Error GoTo Bộ_xử_lý_lỗi Exit Sub Bộ_xử_lý_lỗi: Resume Next End Sub Đoạn chương trình sau thực truy xuất đến tệp, sau đóng tệp lại Nếu q trình thao tác có lỗi xảy ra, chương trình tự động nhảy đến dịng lệnh phía sau nhãn lbErr để hiển thị thông báo lỗi xảy cho người sử dụng Sub SolveErrorExample() On Error GoTo lbErr Open "C:\fileABC.txt" For Input As Close Exit Sub lbErr: MsgBox "Loi xay ra: " & Err.Description, vbCritical, "Thong bao loi" End Sub Khi thực thi chương trình, trường hợp tệp C:\fileABC.txt khơng tồn tại, người dùng nhận thông báo lỗi sau: 96 CHƯƠNG III: CƠ BẢN VỀ NGƠN NGỮ LẬP TRÌNH VISUAL BASIC Hình III-31: Thơng báo lỗi người dùng tự tạo 14.3.2 Đối tượng Err Đối tượng Err chứa tất thông tin lỗi thực thi chương trình Đối tượng thường sử dụng với câu lệnh On Error Resume Next Nhờ có đối tượng Err mà người lập trình biết rõ thơng tin lỗi xảy để có hướng xử lý thích hợp Đối tượng Err có nhiều phương thức thuộc tính khác phục vụ cho việc xử lý lỗi Trong đó, thuộc tính phương thức sử dụng nhiều bao gồm: Description, Number Clear Thuộc tính Number Thuộc tính Number trả số hiệu lỗi thực thi Đây thuộc tính mặc định đối tượng Err, nghĩa hai biểu thức Err.Number Err tương đương nhau, trả số hiệu lỗi thực thi Trong trường hợp khơng có lỗi xảy ra, thuộc tính trả giá trị Thuộc tính Description Thuộc tính Description trả chuỗi ký tự mô tả thông tin ngắn gọn lỗi thực thi xảy Thông thường, lỗi xảy ra, nên hiển thị thơng báo lỗi cho người dùng cách sử dụng hàm MsgBox kết hợp với thuộc tính Description Trong trường hợp khơng có lỗi xảy ra, thuộc tính trả chuỗi ký tự rỗng “” Phương thức Clear Phương thức Clear xoá tất thuộc tính đối tượng Err, có nghĩa sau thực thi phương thức Clear, đối tượng Err trở trạng thái lỗi xảy Phương thức thường gọi sau tiến hành xử lý xong lỗi thực thi Ví dụ sau minh hoạ cách thức sử dụng đối tượng Err Trong ví dụ có thực phép chia cho 0, chương trình làm phát sinh lỗi thực thi Nhờ có câu lệnh On Error GoTo out nên có lỗi, chương trình tự động nhảy đến câu lệnh sau nhãn out Vì câu lệnh sau câu lệnh làm phát sinh lỗi MsgBox x Exit Sub không thực Đoạn mã lệnh sau nhãn out thực nhiệm vụ thông báo cho người dùng số hiệu lỗi mơ tả lỗi Sub test() On Error GoTo out Dim x, y x = / y ' Dòng lệnh làm phát sinh lỗi chia cho MsgBox x Exit Sub out: ' Hiển thị thông báo lỗi cho người dùng MsgBox “Ma loi: ” & Err.Number MsgBox Err.Description 97 ... chương trình Để tránh tượng vậy, người lập trình cần phải thực kỹ thuật bẫy lỗi viết chương trình Bẫy lỗi thực chất viết đoạn mã lệnh chặn thông báo lỗi mặc định hệ thống hướng dẫn chương trình cách... gian từ mã lệnh chương trình sử dụng cú pháp: Debug Print Ø Thay đổi giá trị biến chạy chương trình từ cửa sổ trung gian Chẳng hạn chương trình thực thi có biến a, người... thi chương trình, VBAIDE cịn hỗ trợ người lập trình cơng cụ dùng để thử nghiệm dịng lệnh kiểm sốt biến chương trình Đây cơng cụ hữu ích giúp người lập trình theo dõi từ phát lỗi chương trình, lỗi