You are on page 1of 26

Bi 1: Gii Thiu

1) Lp trnh l g?
Lp trnh l vic chuyn i li gii bng ngn ng t nhin ca 1 bi ton sang ngn ng my
tnh. Kt qu l ta s c 1 chng trnh chy trn my tnh v gii quyt c bi ton .
2) Ti sao phi lp trnh?
Li gii ca cc bi ton thc t c trnh by di dng ngn ng t nhin (ngn ng giao tip
trong i sng hng ngy nh ting Vit, Anh, Php, ).
My tnh cng c ngn ng ring ca n. Nhng ngn ng trong my tnh th rt n s. V d:
cng 2 s, so snh 2 s,
Do ta cn chuyn i li gii ca bi ton dng ngn ng t nhin sang ngn ng my tnh.
Qu trnh chuyn i gi l lp trnh (hay m ha).


3) Cc bc cn thit khi lp trnh
gii quyt 1 bi ton trn my tnh (lp trnh), ta cn thc hin nhng bc sau:
Bc 1: Xc nh v hiu r bi ton.
Bc 2: Tm li gii cho bi ton dng ngn ng t nhin.
Bc 3: Lp trnh (programming).
V d: Lp trnh gii bi ton phng trnh bc 2 nh sau: Ax
2
+ Bx + C = 0.
Bc 1: bi ton y l phng trnh bc 2 c dng Ax
2
+ Bx + C = 0. Vic hiu r bi ton
y l A, B, v C cc hng s v A 0; x l n s ca phng trnh.
Bc 2: nh ta bit li gii ca phng trnh bc 2 c biu din di dng ngn ng t
nhin thng qua cc bc nh sau:
Tnh A = B
2
4AC
Nu A 0 th phng trnh c 2 nghim l
A 2
B
x
2 , 1
A
=
Nu A < 0 th phng trnh v nghim
Bc 3: chn ngn ng lp trnh
4) Mt s cch thc biu din li gii ca bi tan
Li gii ca 1 bi ton thng c gi l thut gii (thut ton, algorithm). Thng thng
thut gii ca 1 bi ton thng c biu din dng lu (scheme) hay m gi (pseudo-code).
Hnh di l cch thc biu din thut ton gii phng trnh bc 2 dng lu
Li gii ca bi tan
dng ngn ng t nhin
Lp trnh
Li gii ca bi tan
dng ngn ng my tnh





an m (code) di y l cch thc biu din thut ton gii phng trnh bc 2 bng m
gi
A = B
2
4AC
If A 0 Then
A 2
B
x
2 , 1
A
=
If A < 0 Then phng trnh v nghim
5) Ngn ng lp trnh (Programming Languages)
Ngn ng c dng cung cp cu lnh cho my tnh. C rt nhiu loi ngn ng, di y lit
k 1 s loi:
+ Ngn ng cp thp: Assembly.
+ Ngn ng cho mc ch tng qut: PL/I, C, C++, Pascal, Modula-2, Ada, Java, C#, Visual Basic.
+ Ngn ng cho ton, khoa hc, k thut: Fortran, Maple, Matlab, Mathematica.
+ Ngn ng cho tin trnh kinh doanh: Cobol, RPG.
+ Ngn ng cho tr tu nhn to: Prolog, Lisp.
+ Ngn ng x l chui, ngn ng script: Perl, Python, VBScript, JavaScript.
6) Visual Basic for Applications (VBA)
+ VBA l phn m rng ca ngn ng Visual Basic c dng nng cao cc tnh nng trong
Word, Excel, Access.
+ m ca s VBA trong Excel, nhn phm Alt +
F11.
+ Thm 1 module vo trong Workbook.
Bc 1: Nu cha trong ca s VBA th nhn
Alt + F11
Bc 2: Click vo tn workbook. Click menu
Insert ri chn Module (Module l 1 n v cha
m lnh).

+ Thm 1 hm vo trong 1 module
Bc 1: M module
Bc 2: Click menu Insert ri chn Procedure

A = B
2
4AC
A 0?
v nghim
Sai
ng
A 2
B
x
2 , 1
A
=

Bc 3: t tn hm ti Name; ri chn
Function.
Khi trn ca s VBA s xut hin nhng
dng sau:

Public Function Hello()

End Function

Hm l 1 tp hp cc cu lnh thc hin 1
chc nng no .




+ V d: Vit 1 hm n gin trn VBA.
Bc 1: M ca s VBA.
Bc 2: Thm 1 hm c tn l Hello.
Bc 3: G vo dng lnh sau:
MsgBox ("Chao ban, day l chuong trinh VBA dau tien cua toi!!!")
Khi trn ca s VBA, bn s thy kt qu nh sau:

Public Function Hello()
MsgBox ("Chao ban, day l chuong trinh VBA dau tien cua toi!!!")
End Function

Bc 4: Kim tra (test) chc nng ca hm Hello.
Quay li Excel, ti 1 bt k, g vo cng thc sau: =Hello()

Ch : lu workbook c cha cc hm vit bng VBA, ta phi dng loi file Excel Macro-
Enabled Workbook (*.xlsm)





Bi 2: Bin Kiu d liu
Bin (variable) l 1 vng b nh dng lu tr 1 gi tr c tnh tm thi. Trc khi s dng 1
bin, ta phi khai bo bin.
1) Cch khai bo bin
Dim <tn bin> As <kiu> [,<tn bin> As <kiu>]
- tn bin : phi bt u bng 1 k t, di ti a 255 k t, khng c c khong trng v du
chm.
- kiu (data type) : c nhng kiu sau:
Loi Tn kiu S byte Min gi tr
S nguyn
Byte 1 0 to 255
Integer 2 [32,768, 32,767]
Long 4 [2,147,483,648, 2,147,483,647]
S thc
Single 4
S m:
3.402823E38 to 1.401298E45
S dng:
1.401298E45 to 3.402823E38
Double 8
S m:
1.79769313486232E308 .. 4.94065645841247E324
S dng:
4.94065645841247E324 .. 1.79769313486232E308
Logic
Boolean
2 True, False
Ngy, gi Date 8 01/01/100 to 31/12/9999
Chui
String T 0 n khong 2 t k t
1 k t Char 2

V d 1:
Dim diem As Single, phai As Boolean, ngay as Date
Dim ten As String
Ch : Bt ch bt buc phi khai bo bin trc khi dng: ti ca s VBA, click menu Tools
Options, ri chn Require Variable Declaration.

2) Cc php ton
- Cng, tr, nhn, chia : +, , *, /
- Ly tha : ^ VD: 6^2 36
- Tr v s d ca php chia: mod VD: 14 mod 3 2
- Tr v thng s ca php chia: \ VD: 14 \ 3 4
- Ni nhiu chui: & VD: abc & 456 & xyz abc456xyz

3) Php gn
Dng thay i gi tr ca 1 bin. C php nh sau: <Tn bin> = <gi tr>

V d 2:
ten = Visual Basic
phai = True
ngay = #10/18/2011#
diem = 6.5
diem = diem + 0.5
x = y^2 + (z mod y)
V d 3: vit hm tr v thng s ca 1 php chia
Public Function ThuongSo(SoBiChia As Integer, SoChia As Integer)
ThuongSo = SoBiChia \ SoChia
End Function

Ch :
- Khai bo tham s (argument / parameter): <tn tham s> As <kiu>
- Tham s c dng nh bin, ngha l c th p dng cc php ton, php gn,
- Hm lun tr v 1 gi tr, c php: <tn hm> = <gi tr tr v>

Bi tp
1) Vit hm tr v s d ca 1 php chia.
2) Vit hm nhn vo 1 s nguyn c 3 ch s, tnh tng v tch ca 3 ch s y.
3) Vit hm nhn vo 1 s tin nguyn, i s tin y thnh t 500, 20, v d bao nhiu.
4) Vit hm nhn vo 1 thi gian tnh theo giy, i sang dng gi:pht:giy.
(Gi : cc bi 2, 3, v 4 ta tr v 1 chui)



Bi 3: Lnh iu kin (Conditional Statements)
Lnh iu kin cho php CPU thc thi 1 tp hp lnh trong nhng iu kin c nh trc.
1) iu kin (Condition / Criterion)
- iu kin l nhng biu thc so snh v lun tr v True hoc False.
1.1) n
<biu thc> <php ton so snh> <biu thc>
- php ton so snh: >, >=, <, <=, =, <>
V d 1: a > 10
(n mod 2) = 0
ngay <= #28/04/99#
ten = VBA
x+y <> z^2
1.2) Phc
- T hp ca cc iu kin n v cc php ton logic (And, Or).
V d 2: (a > b+5) And (x = #5/20/88#)
(t = 1) Or (t = 3) Or (t = 5) Or (t = 7) Or (t = 8)
(phai = True) Or ((phai = False) And (ngay >= #06/14/89#))

2) Lnh If
2.1) Dng 1
If < iu kin A> Then
< cc lnh A>
End If



2.2) Dng 2
If < iu kin A > Then
< cc lnh if >
Else
< cc lnh else >
End If

ngha: thc thi cc lnh if khi iu kin A ng (True); ngc li thc thi cc lnh else.

iu kin A
T
F
cc lnh else cc lnh if
ngha: thc thi cc lnh A khi
iu kin A ng (True)
T
iu kin A
cc lnh A
F
2.3) Dng 3
If < k1 > Then
< cc lnh 1 >
Elseif < k2 > Then
< cc lnh 2 >
Elseif < k3 > Then
< cc lnh 3 >

Else
< cc lnh else>
End If

ngha: thc thi cc lnh 1 khi k1 ng (True); ngc li thc thi cc lnh 2 khi k2 ng; ;
nu tt c cc iu kin u sai (False) th cc lnh else c thc thi.

V d 3: vit hm nhn vo 1 s nguyn, cho bit s chn hay l.

Public Function ChanLe(So As Integer)
If (So mod 2) = 0 then
ChanLe = S chn
Else
ChanLe = S l
End If
End Function

V d 4: vit hm nhn vo 1 s, cho bit s m, dng, hay bng 0.

Public Function Dau(So As Double)
If (So > 0) then
Dau = S dng
Elseif (So < 0) then
Dau = S m
Else
Dau = S 0
End If
End Function



k1
cc lnh 1
T
k2
cc lnh 2
T
k3
cc lnh 3
T
F
F
cc lnh else
F
3) Lnh Select Case

Select Case <biu thc B>
Case n
1

< cc lnh n
1
>
Case n
2

< cc lnh n
2
>

Case Else
< cc lnh else >
End Select

- n
1
, n
2
, : l nhng tp hp gi tr, c th c vit di nhng dng sau:
+ cc gi tr ri rc:
C php: gi tr 1, gi tr 2,
V d 5: 1, 4, 7
ab, cde
#03/15/89#, #04/16/99#
+ cc gi tr lin tc:
C php: gi tr 1 To gi tr 2
V d 6: 1 to 10 [1, 10]
A to Z
Is > 8 (8, +)
Is <= 2 (-, 2]
ngha: gi s a l gi tr ca biu thc B. Nu a thuc tp n
1
th thc thi cc lnh n
1
. Nu a thuc
tp n
2
th thc thi cc lnh n
2
. Nu a khng thuc tp hp cc gi tr no th cc lnh else c
thc thi.

V d 7: vit hm nhn vo thng v nm, cho bit thng c bao nhiu ngy?







ae n
1
cc lnh n
1

T
cc lnh n
2

T
F
cc lnh else
F
ae n
2

a = biu thc B
Public Function SoNgay(Thang As Byte, Nam As Integer)
Dim sn As Byte, tmp As Integer
Select Case Thang
Case 1, 3, 5, 7, 8, 10, 12: sn = 31
Case 4, 6, 9, 11: sn = 30
Case 2
tmp = Nam Mod 100
If tmp = 0 Then tmp = Nam \ 100
If (tmp Mod 4) = 0 Then sn = 29 Else sn = 28
End Select
SoNgay = sn
End Function


Bi tp
1) Vit li v d 3 v 4 bng cch dng SELECT.
2) Vit li v d 7 bng cch dng IF.
3) Vit hm nhn vo 3 s. Cho bit s ln nht.
4) Vit hm nhn vo 1 s nguyn c 3 ch s, cho bit ch s nh nht.
5) Vit hm nhn vo 1 ngy. Cho bit th trong tun.
6) Vit hm nhn vo 1 nm. Cho bit nm m lch.
(Hng dn: nm m lch gm can v chi.
Can: Gip-4, t-5, Bnh-6, inh-7, Mu-8, K-9, Canh-0, Tn-1, Nhm-2, Qu-3.
Chi: T-4, Su-5, Dn-6, Mo-7, Thn-8, T-9, Ng-10, Mi-11, Thn-0, Du-1, Tut-2, Hi-3.)
7) Vit hm nhn vo 2 s A v B. Gii phng trnh Ax + B = 0.
(Hng dn:
nu (A = 0) v (B = 0) th phng trnh c v s nghim.
Nu (A = 0) v (B = 0) th phng trnh v nghim.
Nu (A = 0) th phng trnh c nghim x = -B/A.)
8) Vit hm nhn vo 3 s A, B v C. Gii phng trnh Ax
2
+ Bx + C = 0.
(Hng dn:
nu (A = 0) th gii phng trnh Bx + C = 0.
Nu (A = 0)
+ Tnh A = B
2
4AC
+ Nu A < 0 th v nghim
+ Nu A > 0 th c 2 nghim xc nh bi cng thc
A
B
2
A
)
Bi 4: Lnh vng lp (Loop Statements)
Lnh vng lp cho php thc thi cc lnh nhiu ln.
1) FOR
For <bin> = <gi tr u> To <gi tr cui> Step <bc nhy>
< cc lnh>
Next <bin>














V d 1:

For i = 1 to 5 step 1
s = s + i
next i







For i = 5 to 1 step 1
s = s + i
next i





2) DO
Do
<cc lnh D>
Loop Until <iu kin D>




bin = gi tr u
bin s gi tr cui
cc lnh bin = bin + bc nhy
F
T
i = 1
i s 5 s = s + i i = i + 1
F
T
iu kin D
cc lnh D
T
F
i = 5
i > 1 s = s + i i = i - 1
F
T
ngha: thc thi cc lnh D cho
n khi iu kin D ng (True).
3) WHILE
While <iu kin W>
<cc lnh W>
Wend






ngha: khi iu kin W cn ng (True) th thc thi cc lnh W.

V d 2: vit hm nhn 1 s nguyn dng N, tnh tng v tch cc s t 1 n N.
Tng = 1 + 2 + 3 + + N
Tch = 1x2x3xxN = N!

Public Function TongTich(N As Integer)
Dim Tong As Integer, Tich As Double
Tong = 0
Tich = 1
For i = 1 to N
Tong = Tong + i
Tich = Tich*i
Next i
TongTich = Tong = & Tong & ; Tich = & Tich
End Function


V d 3: vit hm nhn vo 1 s nguyn dng N, tnh tng cc ch s trong N.

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

iu kin W
cc lnh W
T
F
Bi tp
1) Vit li v d 2 bng cch s dng vng lp Do.
2) Vit hm nhn vo 1 s nguyn dng N, tm ch s nh nht trong N.
3) Vit hm nhn vo 1 s nguyn dng N, tnh tng cc s l nh hn hoc bng N.
4) Vit hm nhn vo 1 s nguyn dng N, nu N l th tnh tch cc s l s n, nu N chn th tnh
tch cc s chn s n.
5) Vit hm nhn vo 1 s nguyn dng N. Tnh S = 1 + 1/2! + 1/3! + + 1/n!
6) Vit hm nhn vo 1 s nguyn dng n, v s thc x. Tnh S = x x
2
/2! + x
3
/3! x
4
/4! + +
(1)
n+1
x
n
/n!

7)
nhp s nguyn n, tnh U
n
?


8) Vit hm nhn 1 s h 2 dng chui, i s sang h 10.
9) Vit hm nhn 1 s h 16 dng chui, i s sang h 10.

+ =
=
=
2 1
1
0
1
0
i i i
U U U
U
U
Bi 5: Mng (Array)

- Mng l 1 dy cc bin c cng kiu d liu. Cc bin trong mng c cng 1 tn gi l tn mng.
Cc bin trong mng c phn bit vi nhau thng qua 1 ch s (s nguyn). Mi bin trong mng
c gi l phn t.
1) Khai bo v s dng
- Khai bo 1 mng: Tn mng(n
1
to n
2
) As kiu
V d 1: Dim A(1 To 4) As Byte
Dim N(0 To 6) As Integer
Dim X(2 To 4) As Double



- Cc s 53, 27, 64, 12 l nhng gi tr ca cc phn t c ch s l 1, 2, 3 v 4.
- ly gi tr 1 phn t, ta dng c php: Tn mng(ch s)
- gn gi tr cho 1 phn t, ta dng c php: Tn mng(ch s) = gi tr
V d 2: A(2) = A(1) + A(4)*2
2) Mng 2 chiu (bng / ma trn)
- Mng 2 chiu c cu thnh t nhiu dng v nhiu ct.
- Khai bo: Tn mng(d
1
to d
2
, c
1
to c
2
) As kiu
- S dng: Tn mng(ch s dng, ch s ct)
V d 3: Dim M(1 To 3, 1 To 4) As Double
M(1, 3) = 2.5
3) Mng c s phn t thay i (mng ng/dynamic array)
- Khai bo: Tn mng() As kiu
- Xc nh s phn t ca mng: Redim Tn mng(n
1
to n
2
)
Redim Tn mng(d
1
to d
2
, c
1
to c
2
)
V d 4:
Dim A() As Byte
Dim M() As Double
ReDim A(1 To 5)
ReDim M(1 To 2, 1 To 3)

Ch: t kha Preserve dng gi li cc gi tr ca mng 1 chiu khi Redim.
- Hm LBound v UBound
V d 5:
Dim M() As Byte, d As Integer, c As Integer
A
1 2 4 3 ch s mng
53 27 64 12

ReDim M(1 To 3, 2 To 5)
c = LBound(M) // c = 1
d = UBound(M) // d = 3
c = LBound(M, 2) // c = 2
d = UBound(M, 2) // d = 5
4) Mt s bi ton trn mng
a) Tnh tng cc phn t ca mng

Public Function Tong(Ran As Range)
Dim d As Integer, c As Integer, sum As Double
sum = 0
For d = 1 To Ran.Rows.Count
For c = 1 To Ran.Columns.Count
sum = sum + Ran.Cells(d, c)
Next c
Next d
Tong = sum
End Function

b) Tm phn t trong mng

Public Function Tim(Val As Double, Ran As Range)
Dim num As Integer, oCell As Range
num = 0
For Each oCell In Ran
If oCell.Value = Val Then
num = num + 1
oCell.Font.Color = vbRed
End If
Next
Tim = num
End Function
c) Tm phn t ln nht trong mng

Public Function LonNhat(Ran As Range)
Dim max As Double, v As Integer, d As Integer, c As Integer
max = Ran.Cells(1, 1)
For d = 1 To Ran.Rows.Count
For c = 1 To Ran.Columns.Count
If Ran.Cells(d, c) > max Then max = Ran.Cells(d, c)
Next c
Next d
v = Tim(max, Ran)
LonNhat = max
End Function
Bi tp
1) Vit hm nhn 1 s h 10, i s sang h 2.
2) Vit hm nhn 1 s h 10, i s sang h 16.
3) Tnh dy Fibonacci bng cch dng mng.





+ =
=
=
2 1
1
0
1
0
i i i
U U U
U
U
Bi 6: ng dng VBA trong Excel
V d 1: vit hm nhn vo 2 mng x
i
v W
i
. Tr v

=
n
i
i i
W x
1
.
Public Function EV(X As Range, W As Range)
Dim i As Integer, sum As Double

sum = 0
For i = 1 To X.Columns.Count
sum = sum + X.Cells(1, i) * W.Cells(1, i)
Next i

EV = sum
End Function

V d 2: i ch thnh ch hoa ca vng chn.
Public Sub Hoa()
Dim SelRan As Range, d As Long, c As Long, s As String

Set SelRan = Selection

For d = 1 To SelRan.Rows.Count
For c = 1 To SelRan.Columns.Count
s = SelRan.Cells(d, c)
SelRan.Cells(d, c) = UCase(s)
Next c
Next d
End Sub

Cch a th tc Hoa thnh 1 nt trn thanh Menu:
Bc 1: Right click trn thanh menu chn Customize Quick Access Toolbar
Bc 2: Ti Choose commands from, chn Macros. Click mc Hoa trong pha di. Ri click
nt Add. Click Ok.
Bc 3: Trn thanh menu s xut hin 1 nt Hoa. Khi click vo nt ny th th tc Hoa s thc thi.

Ch :
- Th tc (Sub) khng tr v gi tr v khng gi thc hin trong cng thc.


V d 3: Dng hm c sn trong Excel
Public Function Ex(Ran As Range)
Ex = Application.WorksheetFunction.Sum(Ran)
End Function

V d 4: Thay i kiu ch (Font)
Public Sub KieuChu(Ran As Range)
Dim SelRan As Range

Set SelRan = Selection
With SelRan
.Font.Bold = True
.Font.Color = RGB(125, 236, 123)
.Font.Name = "Times New Roman"
.Font.Size = 12
End With
End Sub

V d 5: Thay i ng vin (Borders)
Public Sub KeKhung(Ran As Range)
Dim SelRan As Range

Set SelRan = Selection
With SelRan
.Borders.Item(xlEdgeBottom).LineStyle = 1
.Borders.Item(xlEdgeTop).LineStyle = 1
.Borders.Item(xlEdgeLeft).LineStyle = 1
.Borders.Item(xlEdgeRight).LineStyle = 1
.Borders.Item(xlInsideHorizontal).LineStyle = 1
.Borders.Item(xlInsideVertical).LineStyle = 1
.Borders.Item(xlDiagonalDown).LineStyle = 1
.Borders.Item(xlDiagonalUp).LineStyle = 1
End With
End Sub




Bi 7: Th tc Hm
Th tc / hm l 1 on lnh thc hin 1 chc nng no . Sau khi thc hin xong on lnh
th hm lun tr v 1 gi tr cn th tc th khng.

1) Cu trc ca 1 th tc/hm
Public Sub < tn th tc >([ phn nh ngha tham s ])
< Cc lnh ca th tc >
End Sub
Public Function < tn hm >([ phn nh ngha tham s ]) As < kiu gi tr tr v >
< Cc lnh ca hm >
< tn hm > = < gi tr tr v >
End Function

2) Cch gi th tc / hm thc hin
Call < tn th tc >[(< danh sch tham s truyn >)]
< tn bin > = < tn hm >[(< danh sch tham s truyn >)]

3) Cch nh ngha tham s trong th tc / hm
ByVal < tn tham s > As < kiu >,
hoc ByRef < tn tham s > As < kiu >,
- ByVal : tham s c kiu gi tr (tham tr), c 2 c im sau:
+ Khi truyn cho php truyn gi tr hoc bin.
+ Khi tham s b thay i gi tr bi nhng cu lnh bn trong th tc nh ngha n, th bin
truyn tng ng s khng b thay i.
- ByRef : tham s c kiu bin (tham bin), c 2 c im sau:
+ Khi truyn ch nn truyn bin.
+ Khi tham s b thay i gi tr bi nhng cu lnh bn trong th tc nh ngha n th bin
truyn tng ng s b thay i theo.

V d 1:
Public Function ThamTri()
Dim y As Integer, s As String

y = 10
s = "y truoc khi goi Test la " & y
Call Test(y)
s = s & "; y sau khi goi Test la " & y
ThamTri = s
End Function

Public Sub Test(ByVal x As Integer)
x = x + 5
End Sub

V d 2:
Public Function ThamBien()
Dim y As Integer, s As String

y = 10
s = "y truoc khi goi Test la " & y
Call Test(y)
s = s & "; y sau khi goi Test la " & y
ThamBien = s
End Function

Public Sub Test(ByRef x As Integer)
x = x + 5
End Sub

Ch : mng lun c truyn dng tham bin.
V d 3:
Public Function ThamBien()
Dim y(1 To 5) As Integer, i As Integer

For i = 1 To 5
y(i) = i
Next i
Call Test(y)
End Function
Public Sub Test(x() As Integer)
Dim i As Integer

For i = 1 To 5
x(i) = x(i) + 1
Next i
End Sub
4) Tm nh hng ca cc bin
- Bin cc b / tham s c khai bo trong th tc, hm.
+ Bin cc b ch c s dng i vi cc cu lnh trong th tc nh ngha ra n.
+ Bin cc b ch tn ti trong b nh khi th tc c thc hin.

V d 4:
Public Function CucBo()
Dim x As Integer

x = x + 5
CucBo = x
End Function
- Bin ton cc Module
a) Cch khai bo:
- Ti phn trn cng ca ca s Module, in vo cc cu lnh khai bo bin.

b) c im:
+ Bin ton cc Module c s dng i vi tt c cc cu lnh trong Module.
+ Bin ton cc Module tn ti trong b nh khi workbook c m.
V d 5:
Option Explicit
Dim TC As Integer TC l bin ton cc Module

Public Function Test1()
TC = TC + 1
Test1 = TC
End Function

Public Function Test2()
TC = TC + 2
Test2 = TC
End Function
5) S trng tn
Khi c s trng tn gia bin cc b v bin ton cc Module. Th bin s c hiu l:
+ Bin cc b: khi thc hin cc cu lnh ca th tc nh ngha ra bin trng tn .
+ Bin ton cc Module: khi thc hin cc cu lnh phn cn li.

V d 6:
Option Explicit
Dim TC As Integer TC l bin ton cc Module

Public Function Test1()
TC = TC + 1
Test1 = TC
End Function

Public Function Test2()
Dim TC as Byte
TC = TC + 2
Test2 = TC
End Function









Bi 8: Hp i thoi
1) Phng php lp trnh
Sau khi c li gii ca bi ton dng ngn ng t nhin, ta s tin hnh t chc chng trnh sao
cho d pht trin, kim tra, nng cp, v lm theo nhm. Di y ta trnh by s lc 3 phng
php.
a) Lp trnh theo hng th tc/hm (Procedural Programming)
+ Chng trnh c chia thnh nhiu th tc v hm.
+ Mi th tc/hm thc hin 1 chc nng no .
+ Mi th tc/hm bao gm 1 s cu lnh no thc thi chc nng ca n.
+ Khi tn ca th tc/hm c gi th chc nng ca th tc/hm c thc hin (cc cu lnh
ca th tc/hm c thc thi).
+ Mi th tc/hm nn c tham s chng tr nn linh ng v tng qut.
b) Lp trnh theo hng i tng (Object Oriented ProgrammingOOP)
+ Chng trnh c chia thnh nhiu i tng.
+ i tng l 1 thc th c tht trong cuc sng nh: sinh vin, ton, ci bn, ng trn,
+ Mt i tng c cu to bi thuc tnh (property/attribute) v phng thc (method).
+ Thuc tnh l nhng tnh cht m t i tng.
+ Phng thc (cng l th tc/hm) l nhng chc nng ca i tng.
+ V d: Xt i tng hnh trn th
Thuc tnh: bn knh, mu ng vin, mu t,
Phng thc: ly bn knh hin ti, thay i bn knh, t mu nn, t mu ng vin,
+ Khi mun s dng thuc tnh/phng thc ca 1 i tng, ta dng c php: i tng.thuc
tnh, i tng.phng thc
c) Lp trnh theo hng s kin (Event Driven Programming)
+ y l s m rng ca OOP nhng thm khi nim s kin/bin c (Event).
+ S kin (cng l th tc/hm) l nhng tc ng t mi trng bn ngoi ln i tng m i
tng c th hiu.
+ V d: xt i tng nt lnh (command button) th cc s kin l: click, right click, mouse move
+ Khi lp trnh theo hng ny, th ta ch yu vit cc cu lnh cho s kin cn thit. Ngha l dy
i tng cch ng x vi tc ng t bn ngoi.
+ Cc cu lnh ca 1 s kin ch c thi hnh khi s kin c kch hot.
2) Form
+ Form l 1 ca s. thm 1 Form, click menu Insert UserForm.
+ Mt vi thuc tnh quan trng ca Form:
Name: tn ca Form (dng vit code)
Caption: chui k t xut hin trn thanh tiu ca Form
+ Mt vi s kin quan trng ca Form:
Activate: khi Form c kch hot
Terminate: khi ng Form.
V d 1: To 1 Form vi cc s kin sau:
Activate: hin th Hello
Terminate: hin th Bye Bye
MouseMove: thay i mu nn ca Form.

Bc 1: Insert UserForm. Sau t thuc tinh Name l frmDemo.
Bc 2: Double click trn Form m ca s vit s kin cho Form. Ri sau chn s kin cn
vit code ti ny











Bc 3: vit code cho 3 s kin nh sau
Private Sub UserForm_Activate()
MsgBox ("Hello")
End Sub

Private Sub UserForm_MouseMove()
Me.BackColor = RGB(Rnd() * 255, Rnd() * 255, Rnd() * 255)
End Sub

Private Sub UserForm_Terminate()
MsgBox ("Bye Bye")
End Sub
Bc 4: vit hm sau trong 1 Module.
Public Function Test()
frmDemo.Show
End Function


3) Command Button: nt lnh.
+ Mt vi thuc tnh quan trng:
Name: tn
Caption: chui k t xut hin trn nt lnh
Enabled = True / False cc s kin c / khng c kch hot
Visible = True / False hin th / n
+ Mt vi s kin quan trng ca Form:
Click: s kin ny xy ra khi ngi dng click chut trn nt lnh.
4) Label: hin th chui k t tnh (ngi dng khng th thay i). Thuc tnh Caption cha chui
k t hin th.
5) TextBox: hin th chui k t m ngi dng c th thay i.
+ Mt vi thuc tnh quan trng:
Text: chui k t hin th.
Font: font ch.
ForeColor: mu ch.
MaxLength: s k t ti a (=0 ngha l khng gii hn).
MultiLine = True / False nhiu dng / 1 dng.
V d 2: chia cc trong vng chn bi 1 s.
Bc 1: To Form nh hnh sau.









Bc 2: Vit cc s kin sau.
Private Sub cmdCancel_Click()
Unload frmPhepChia
End Sub




Private Sub cmdOk_Click()
Dim SoChia As Double, cell As Range
SoChia = CDbl(txtSoChia.Text)
For Each cell In Selection
cell.Value = cell.Value / SoChia
Next cell
End Sub
Name = txtSoChia
Name = cmdCancel Name = cmdOk
Name = frmPhepChia
Bc 3: Vit th tc sau trong 1 Module.
Public Sub PhepChia()
frmPhepChia.Show
End Sub
Bc 4: a th tc PhepChia bc 3 ln thanh cng c.
+ Right click trn thanh menu chn Customize Quick Access Toolbar
+ Ti Choose commands from, chn Macros. Click mc PhepChia trong pha di. Ri click
nt Add. Click Ok.
+ Trn thanh menu s xut hin 1 nt PhepChia. Khi click vo nt ny th th tc PhepChia s
thc thi.

6) OptionButton / CheckBox: chn 1 mc duy nht / chn nhiu mc cng lc.
+ Mt vi thuc tnh quan trng:
Value = True / False chn / khng chn.
Caption: ch hin th.
V d 3: i ch hoa/thng cho cc trong vng chn.
Bc 1: To Form nh hnh sau.








Bc 2: Vit cc s kin sau.
Private Sub cmdClose_Click()
Unload frmChangeCase
End Sub

Private Sub opbLower_Click()
Dim cell As Range

For Each cell In Selection
cell.Value = LCase(cell.Value)
Next cell

End Sub
Name = frmChangeCase
Name = opbUpper
Name = opbLower
Name = opbProper
Name = cmdClose
Private Sub opbProper_Click()
Dim cell As Range

For Each cell In Selection
cell.Value = Application.WorksheetFunction.Proper(cell.Value)
Next cell

End Sub

Private Sub opbUpper_Click()
Dim cell As Range

For Each cell In Selection
cell.Value = UCase(cell.Value)
Next cell

End Sub

7) ListBox: hin th 1 danh sch cc mc (item).
+ Mt vi thuc tnh quan trng:
MultiSelect:
0 : ch c chn 1 mc.
1 : cho php chn nhiu mc bng cch click vo cc mc cn chn.
2 : cho php chn nhiu mc bng cch nhn CTRL hoc SHIFT v click vo cc mc cn chn.
ListCount : tng s mc c trong ListBox.
List : l mng kiu chui, cc phn t c nh ch s t 0 n (ListCount 1). Mi phn
t gi chui k t ca 1 mc.
Selected : y l 1 mng kiu Boolean vi s phn t ging nh thuc tnh List.
Selected(i) = true List(i) c chn
Selected(i) = false List(i) khng c chn
+ Mt vi phng thc :
Xa tt c cc mc: <Tn ListBox>.Clear
Thm 1 mc vo ListBox: <Tn ListBox>.AddItem < chui >
Xa 1 mc: <Tn ListBox>.RemoveItem < index >

V d 4:
Bc 1: To Form c Name l frmListBox nh hnh sau.













Bc 2: Vit cc s kin sau.
Private Sub cmdAdd_Click()
lbo.AddItem txtItem.Text
End Sub

Private Sub cmdClear_Click()
lbo.Clear
End Sub

Private Sub cmdRemove_Click()
Dim i As Long

i = 0
While i <= (lbo.ListCount - 1)
If lbo.Selected(i) = True Then
lbo.RemoveItem i
Else
i = i + 1
End If
Wend
End Sub

Bc 3: vit hm sau trong 1 Module.
Public Function Test()
frmListBox.Show
End Function

lbo
txtItem
cmdAdd
cmdClear
cmdRemove

You might also like