Lp trnh VBA trong Excel
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: Ax2 + Bx + C = 0.
Bc 1: bi ton y l phng trnh bc 2 c dng Ax2 + 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 = B2 4AC
Nu 0 th phng trnh c 2 nghim l A2
Bx 2,1
Nu < 0 th phng trnh v nghim
Bc 3: chn ngn ng lp trnh
4) Mt s cch thc biu din li gii ca bi ton
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 ton dng ngn ng t nhin
Lp trnh Li gii ca bi ton dng ngn ng my tnh
Lp trnh VBA trong Excel
on m (code) di y l cch thc biu din thut ton gii phng trnh bc 2 bng m gi
= B2 4AC
If 0 Then A2
Bx 2,1
If < 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
= B2 4AC
0?
v nghim Sai
ng A2
Bx 2,1
Lp trnh VBA trong Excel
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)
Lp trnh VBA trong Excel
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 As [, As ]
- 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.
Lp trnh VBA trong Excel 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: = 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): As
- 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: =
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)
Lp trnh VBA trong Excel
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
- php ton so snh: >, >=, = #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
Lp trnh VBA trong Excel 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
Lp trnh VBA trong Excel 3) Lnh Select Case
Select Case
Case n1
< cc lnh n1 >
Case n2
< cc lnh n2 >
Case Else
< cc lnh else > End Select
- n1, n2, : 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
Lp trnh VBA trong Excel 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 Ax2 + Bx + C = 0.
(Hng dn: nu (A = 0) th gii phng trnh Bx + C = 0.
Nu (A 0)
+ Tnh = B2 4AC
+ Nu < 0 th v nghim
+ Nu 0 th c 2 nghim xc nh bi cng thc A
B2
)
Lp trnh VBA trong Excel
Bi 4: Lnh vng lp (Loop Statements) Lnh vng lp cho php thc thi cc lnh nhiu ln.
1) FOR For = To Step
< cc lnh> Next V d 1: For i = 1 to 5 step 1
s = s + i next i
For i = 5 to 1 step 1