TT. Visual Basic
' Ham IsMissing kiem tra xem tham so nay co hay khong
If IsMissing(giay) Then giay = ""
Dim hientai
hientai = Now
gio = Format$(hientai, "hh")
phut = Format$(hientai, "nn")
giay = Format$(hientai, "ss")
End Sub
Bước 4: Thêm th tc x lý s kin cho Button cmdGiophutgiay, trong th tc này
chèn đon mã sau:
Private Sub cmdGiophutgiay_Click()
Dim gioht As String
Dim phutht As String
Dim giayht As String
Call Laythoigian(gioht, phutht, giayht)
lblTg.Caption = gioht & ":" & phutht & ":" & giayht
End Sub
Bước 5: Thêm th tc x lý s kiên cho Button cmdGiophut, trong th tc này chèn
đon mã sau:
Private Sub cmdGiophut_Click()
Dim gioht As String
Dim phutht As String
' Khong su dung tham so thu ba
Call Laythoigian(gioht, phutht)
lblTg.Caption = gioht & ":" & phutht
End Sub
Bước 6: Lưu d án li và chy chương trình. Kim tra kết qu.
Bài tp 1II-6
PARAM ARRAY
Bước 1: To thư mc Basic\Bt1II-6. To d án mi trong thư mc này.
Bước 2: To Form như hình sau:
Hình I.14: Param Array
Trang 16
TT. Visual Basic
Trong đó:
ListBox: Name: lstTen
Button: Name: cmdds; Caption: Them vao danh sach
Bước 3: Chèn modul mi vào d án tên Modul1. Sau đó, chn Tool\Add Procedure để
chèn th tc sau:
Name: Diends
Type: Sub
Scope: Public
Bước 3: Chèn đon mã sau vào th tc Diends
Public Sub Diends(ParamArray Ten() As Variant)
' Su dung ParamArray thi mang phai kieu Variant va
' mang nay la tham so cuoi cung cua thu tuc
Dim hten As Variant
For Each hten In Ten()
Form1.lstTen.AddItem hten
Next
End Sub
Bước 4: ParamArray cho phép không cn xác định s lượng các đối s trong mt
chương trình con. Bây gi, thêm hàm x lý s kin cho nút cmdds: cmdds_Click:
Private Sub cmdds_Click()
Call Diends("Huynh Xuan Hiep", "Nguyen Van Linh", "Lam Hoai
Bao")
Call Diends
Call Diends("Phan Huy Cuong")
End Sub
Bước 5: Lưu d án li và chy chương trình. Kim tra kết qu (hình bên dưới). Lưu ý
đến li gi th tc trong s kin cmdds_Click (s lưng đối s khác nhau)
Hình I.15: Kết qu Param
Array
Trang 17
TT. Visual Basic
Bài tp 1II-7
X LÝ CHUI
Bước 1: To d án mi trong thư mc Basic\Bt2-7 vi giao din như sau:
Trang 18
54
3
2
1
Hình I.16: X
chui
1: Form: Name: frmMain; MinButton: False; MaxButton: False; Font: VNI-Times.
2: Label: Name: lblTen.
3: TextBox: Name: txtTen.
4: CommandButton: Name: cmdTen; Caption: Tách tên.
5: CommandButton: Name: cmdCKT; Caption: Ct khong trng.
Bước 2: To mt hàm ct khong trng như sau:
Private Function ATrim(ByVal Name As String) As String
Name = LTrim(RTrim(Name))
Do While InStr(Name, "99") <> 0
Name = Replace(Name, "99", "9")
Loop
ATrim = Name
End Function
Bước 3: Trong ca s thiết kế Form; nhp đúp vào Tách tên, ta xđon mã cho s
kin này:
Private Sub cmdTen_Click()
Dim sName As String, Name As String
sName = ATrim(StrConv(txtTen.Text, vbProperCase))
Dim i As Long
i = InStrRev(sName, "9")
Name = Right(sName, Len(sName) - i)
MsgBox Name & ": " & Str(Len(Name))
End Sub
Bước 4: Sau đó, tr li ca s thiết kế, nhp đúp vào Ct khong trng, ta x lý:
Private Sub cmdCKT_Click()
Dim sName As String
sName = ATrim(StrConv(txtTen.Text, vbProperCase))
TT. Visual Basic
Trang 19
MsgBox sName, , "Kieu du lieu chuoi"
End Sub
Bước 5: Lưu d án và chy chương trình.
Bài tp 1II-8
X LÝ LI
Bước 1: To mt d án mi. Dùng Tools\Add Procedure thêm mt th tc mi tên
GoiThuTuc vào Form1 vi ni dung như sau:
Public Sub GoiThuTuc()
Dim bien As Integer
MsgBox "Truoc khi gan tri cho bien"
bien = "Bien nguyen khong nhan gia tri la chuoi"
MsgBox "Sau khi gan tri cho bien: " & "Bien = " & Format(bien)
End Sub
Bước 2: Th tc x lý s kin Form_Load có ni dung như sau:
Private Sub Form_Load()
MsgBox "Truoc khi goi thu tuc"
Call GoiThuTuc
MsgBox "Sau khi goi thu tuc"
End Sub
Lưu d án vào thư mc Basic\Bt1II-8:
Form: tên là form1
Project: Debug
Bước 3: Chy chương trình. VB đưa ra hp thoi để bt li (debug) chương trình. Ta
chn End để tr v ca s son tho.
To tp tin thc thi tên Debug.exe bng cách chn File\Make Debug.exe. Chy
tp tin Debug.exe t Windows Explorer ta nhn được hp thoi báo li và chương
trình t động chm dt.
Nhn xét kết qu khi thc hin chương trình.
Bước 4: Bây gi ta thêm vào đon mã x lý li trong th tc ca s kin Form_Load:
Private Sub Form_Load()
On Error GoTo Xulyloi
MsgBox "Truoc khi goi thu tuc"
Call GoiThuTuc
MsgBox "Sau khi goi thu tuc"
Thoat:
Exit Sub
Xulyloi:
TT. Visual Basic
Trang 20
MsgBox "Su kien Form_Load - Loi xay ra: " & Err.Description
Resume Thoat
End Sub
Bước 5: Lưu d án và chy chương trình. Nhn thy, thay vì ta nhn được câu thông
báo li t VB, mt hp thoi báo li do ta đưa vào xut hin. Lưu ý, nhng li được
bt trong th tc Form_Load (ch không phi trong GoiThuTuc()). Nguyên nhân vì
th tc GoiThuTuc() được gi bi th tc x lý s kin Form_Load.
Bước 6: Biên dch li thành tp tin Debug.exe, chy nó. Nhn xét kết qu.
Bước 7: Các kết qu trên cho ta biết được các li trong s kin Form_Load được x
bi các thao tác bt li trong th tc Form_Load. Nhưng nếu th tc GoiThuTuc()
cũng có các thao tác bt li chương trình thì sao? Đơn gin gi s mt li xut hin
trong GoiThuTuc(). B phn x lý li ca GoiThuTuc (do ta thêm vào để bt li
chương trình) s thc thi thay vì đon lnh bt li ca s kin Form_Load đưc thc
hin. Khi GoiThuTuc chm dt, quyn x lý li mi trao li cho s kin Form_Load.
Sa li th tc GoiThuTuc như sau:
Public Sub GoiThuTuc()
Dim bien As Integer
On Error GoTo Xulyloicucbo
MsgBox "Truoc khi gan tri cho bien"
bien = "Bien nguyen khong nhan gia tri la chuoi"
MsgBox "Sau khi gan tri cho bien: " & "Bien = " & Format(bien)
Thoatthutuc:
Exit Sub
Xulyloicucbo:
MsgBox "GoiThuTuc() - Loi xay ra: " & Err.Description
Resume Thoatthutuc
End Sub
Bước 8: Lưu d án và chy chương trình. Thay đon mã Resume Thoatthutuc bng
Resume và chy chương trình. Mt vòng lp vô tn xy ra do chương trình s quay li
đon mã b li và c gng thc thi nó; để thoát chương trình ta phi bm t hp phím
Ctrl + Break.
Bây gi thay Resume bng Resume Next và chy li chương trình. Nhn xét kết
qu. Gii thích.
II.2 Bài tp t làm
1) Thiết kế chương trình cho phép nhp vào các h s a, b ca phương trình bc 1
dng: ax+b=0; sau đó gii phương trình này. Giao din chương trình có th như sau: