11. Gỡ lỗi và bẫy lỗi trong VBAIDE
11.3. Bẫy lỗi trong VBAIDE
Khi gặp phải những lỗi phát sinh lúc thực thi chương trình sẽ gây ra những kết quả khơng thể tiên đốn được hoặc chương trình sẽ dừng lại và sẽ hiển thị thơng báo lỗi rất phức tạp. Nếu đứng về phía người sử dụng chương trình thì những hộp thoại như vậy thường gây ra sự lúng túng khi sử dụng chương trình. Để tránh những hiện tượng như vậy, người lập trình cần phải thực hiện các kỹ thuật bẫy lỗi trong khi viết chương trình.
Bẫy lỗi thực chất là viết các đoạn mã lệnh chặn các thơng báo lỗi mặc định của hệ thống và hướng dẫn chương trình cách thức xử lý lỗi đã chặn được. Các đoạn chương trình xử lý lỗi cịn được gọi là bộ xử lý lỗi (error-handler). VBA cĩ cung cấp các câu lệnh nhằm giúp người lập trình thực hiện bẫy lỗi trong chương trình của mình.
12. Thực hành
Hướng dẫn chung:
- Khởi động Microsoft Office (MsExcel,….)
-Thực hiện lệnh Tools \ Macro \ Visual Basic Editor hay Developer -Thực hiện lệnh Insert \ Modul , sau đĩ ta gõ code vào trong modul:
Bài 1:(hd)Hiện lên thơng báo như hình:
HD: code
Public Function chao2()
MsgBox "Ban co muon thoat khoi chuong trinh khong", vbCritical Or _ vbYesNo, "Thoat khoi chuong trinh"
End End Function
Bài 2: Hiện lên thơng báo “15 phút , Ban cac ban nop bai kiem tra”, sau đĩ tạo button(form
control) để hiện thơng báo lên.
HD:
Bước 1: code
Sub chao3()
MsgBox "15 phút , Ban cac ban nop bai kiem tra", , "Thong bao" End Sub
Bước 2: tạo button / chuột phải assign macro hiện như hình
Bài 3:Hiện lên các thơng báo thay đổi theo người dùng:
- thơng báo1 “chao buoi sang”
- thơng báo2 “cac ban lam xong bt nop bai ” - thơng báo3 “chuc vui ve nhe ”
sau đĩ tạo button(form control) để hiện thơng báo lên.
HD:
Bước 1: viết chữ A1 ( excel )
Bước 2: code
Sub chao4()
MsgBox Range("A1") End Sub
Bài 4: Phép gán
a/ Viết hàm trả về số dư của 1 phép chia.
HD: Trả về số dư của phép chia: mod VD: 14 mod 3 => 2 b/ Lập hàm tính tổng 2 số c/ Lập hàm tích 3 số d/ Lập hàm tính hiệu 4 số e/ Lập hàm tính xn HD: Lũy thừa : ^ VD: 6^2 => 36 Bài 5(hd) Vịng lặp while
a/ Viết hàm nhận vào 1 số nguyên dương N, tính tổng các chữ số dư trong N. HD:
Public Function TongChuSo(N As Integer)
Dim Tong As Integer, cs as Byte Tong = 0 While N > 0 cs = N mod 10 N = N \ 10 Tong = Tong + cs Wend TongChuSo = Tong End Function
b/ sau sẽ đếm số chữ số chẵn trong khoảng hai số A, B: HD: Function tim()
Dim i, A, B, SoChan As Integer A = 1: B = 10
i = A
SoChan = 0 Do While i <= B
If (i Mod 2) = 0 Then SoChan = SoChan + 1 i = i + 1
Loop
„ Debug.Print ("So chu so chan = " & SoChan) MsgBox "So chu so chan = " & SoChan
End Function
Bài 6: Cấu trúc lựa chọn select case
a/ Viết hàm nhận vào 1 ngày. Cho biết thứ trong tuần.
b/ Viết hàm nhận vào 1 số nguyên, cho biết số đĩ chẵn hay lẻ. c/ Viết hàm nhận vào 1 số, cho biết số đĩ âm, dương, hay bằng 0.
Bài 7 : Sử dụng vịng lắp For tính tổng 20 số tự nhiên đầu tiên
HD:
Dim i,n,s Integer n=20
s=0 i=1
For i=1 to n step 1 s=s+i Next i
MsgBox “s=” & s
Bài 8: (Giao diện UserForm)
a/Viết hàm nhận vào 3 số A, B và C. Giải phương trình Ax2 + Bx + C = 0.
( Gởi ý:
Nếu (A = 0) thì giải ptbac 1. Nếu (A # 0)
+ Tính = B2 – 4AC + Nếu < 0 thì vơ nghiệm
+ Nếu >= 0 thì cĩ 2 nghiệm xác định bởi cơng thức )
HD:
Bước 1 : thiết kế Form như hình
- Nhập a,b,c: label
- Giải, bỏ qua: commandButton - Các hình cịn lại:textbox
Bước 2: code
Private Sub cmdboqua_Click()
Unload Me End Sub
'giai
Private Sub cmdgiai_Click() Dim delta As Double
delta = Me.b.Text * Me.b.Text - 4 * Me.a.Text * Me.c.Text If Me.a.Text = 0 Then
Me.kq.Text = "ptbac 1"
Else
If delta < 0 Then
Me.kq.Text = "vo nghiêm" Else
If delta = 0 Then
Me.kq.Text = "x1=x2=" & Round(-Me.b.Text / (2 * Me.a.Text), 2) Else
Me.kq.Text = "x1=" & Round((-Val(Me.b.Text) + Sqr(delta)) / (2 * Me.a.Text), 2) & "x2=" & Round((-Val(Me.b.Text) - Sqr(delta)) / (2 * Me.a.Text), 2)
End If End If End If End Sub Ghi chú:
- Từ khĩa Me là từ khĩa đại diện cho form hiện tại. Cơng thức tổng quát <Tên Form>.<Tên đối tượng>.<thuộc tính đối tượng>
Ví dụ: Me.a.text (a là tên của textbox, thuộc tính text là giá trị người sử dụng gõ vào từ bàn phím cho đối tượng textbox đo)
- Hàm val : chuyển một xâu ký tự sang số - Hàm round : làm trịn
- Hàm sqr :căn bậc 2
- Đĩng form : Unload Me hoặc End
b/ Viết hàm nhận vào 2 số A và B. Giải phương trình Ax + B = 0.
(Gởi ý :
Nếu (A = 0) thì phương trình vơ nghiệm.
Nếu (A # 0) và (B = 0) thì phương trình cĩ vơ số nghiệm. Nếu (A # 0) và (B # 0) thì phương trình cĩ nghiệm x = -B/A.)
c/ Xây dụng form đọc vào 3 số thực a,b,c. Đưa ra số lớn nhất 13. Kiểm tra