Lập trình VBA trong excel cho người mới bắt đầu phan tự hướng 2015 Lập trình VBA trong excel cho người mới bắt đầu phan tự hướng 2015 Lập trình VBA trong excel cho người mới bắt đầu phan tự hướng 2015 Lập trình VBA trong excel cho người mới bắt đầu phan tự hướng 2015 Lập trình VBA trong excel cho người mới bắt đầu phan tự hướng 2015
Trang 2fr$0r?0 tffru t0fi$H 0EEs
}TMKru ru0ut
HUUIdvt
Trang 3rvnHr
Ax y^
cOH voH)
t0ntlff tlHc
HUlildvt
tlil0nff
nI
ilultd 'sut
Trang 4IecxA dgqd
IeIS irl uqnb u"g
UgIp
I€G
3uoq4 queqJ
nglqu
ulgur
ugqd 'tgqc fqo
lQl
Trang 65.1.1 8xce12003 " ' "" 4'7
5.1.2 Excel2007 vh 2010 '." ' " 48
5.2 Antohn khi ldm viQc v6'i tfp tin Excel ' ' ' '.' 50
5.3 Sil dyng cdc chuong trinh diQt virus 53
6.1 Uu dii5m cira chirc ndng tg ghi macro (Record Macro) ' 56
5.2 Nhuo.'c cti,5m cira chrlc ning tr,r ghi macro 51
7.1 D6i tuo.ng l4p trinh VBA " 59
7.2 Phuong thilc (Method) ' "-.- ' " .62
7.3 ThuQc tinh (Property) 65
S.1 DOi tuo.ng Application -.' ".""' 67
8.1.1 ThuOc tinh Calculation .""' 68
8.1.2 ThuQc tinh ScreenUpdating ' ""' 69
8.1.3 ThuQc tinh DisplayAlerts '.""" 69
8.2.Ddituo.ng Window .'.' "" 70
8.3 D6i tuQng Workbook .""-"""'72
8.4 DOi tuo.ng Worksheet """""""""'73
8.4.1 Ei6u khiiSn Worksheet .'.""""' 73
8.4.2.Xdc dinh c6c th6ng tin trong Worksheet " ' """'75
8.a.3 NhAp dfr'liQu vho trong Worksheet """"75
8.5 Ddi tuo.''rg Range (kh6i 6) vd Cells (6) ' "'."' """"""""""'76
8.5.1 Phuong thf'c Select vh phuong ph6p xdc dfnh ming """"""""""'7'7
8.5.2 DOi tuo-ng Selection ' """""""""79
8.5.3 DOi tuong Cells """"""""' 80
8.5.4 ThuQc tinh Offset: """"""" 8l
8.5.5 ThuOc tinh Resize """"""" 82
8.5.12.l
8.5.13 I8.6 Tra cfu vi
' 9.4.3 G6
9.4"4.Hu
9.5 Khai b6o v
9.5.1 Md9.s.2.MA
10.4 Sfi'dung In
THIi
11.1 S'i'dung 01
Trang 7GHI MACRO
VOI
A I I T T\T.T
Trang 811.2 Sfi'dung VBAProject tZ6
lL.2.Ngitddng khi md t€nh qud ddi 130
12.3 Cl,c t5i xay ra khi xdy dung macro l3l su DUNG VA XAy DUNG sArrt TRONG VBA 13.1 Sn'dung c6c hdm sin c6 rrong Exce1 135
13.1.1 Goi ci4c him trong WorksheetFunction rir VBA 135
13.1.2 Chbn hdm Excel v)o 6 13j 13.2 Sf'dgng c6c hdm trong V8A 13j 13.2.1 Him to6n hgc 13g 13.2.2 Him xi4c nhdn d[.Iipu 139
13.2.3 Hdrn chuy6n ctOi giu,a cric ki6u dfi.li6u 140
13.2.4 Hdm v6 x0,lf chudi 142
13.2.5.IIdm rlinh dang dfr.li€u 145
13.2.6 Him tgo s6 ng6u nhi6n t46 13.2.7 Hdm v6 ngiy gio 147
13.2.8 Hdm v€ cl6 hoa i51
13.2.9 Him chuong trinh , 152
13.2.10 Cric hdm khiic 152
13.3.Xdy dsng him trong VBA 155
13.3.1 phdn bi6t hdm tu lap v6i thrj tuc : 155
13.3.2 Ci{ch xdy dung him tu 1Ap 155
13.3.3 MO t6 nQi dung hdm 158
13.3.4 T4o vd sil dgng him tu.lAp rrong Add_Ins t59 13.3.5 Goi hdm tu l6p tir thri tuc 162
nop THOAT TRONG VBA la.1 HQp thdng b6o Message box 163
14.1.1 Cr{c lo4i th6ng rliQp rrong butrons 164
14.L2 Th6ng s6 c6c nrit di6u khi€n 164
14.1.:
14.1.1
14.2 Phuon
14.3 Him Ir
15.1 Di6u kl 15.1.1.
t5.1.2
15 l 3.
15.1.4.
15.1.5.l
15.2 Didu khi ls.2.1 I
ls.2.2.1
15.2.3 E
ls.2.4 E
r5.2.s D
Ls.2.6 P)
15.2.7 D.
1s.2.8 Di ts.2.9.LC
15.2.10 'v 15.2.11 D
16.1 C6c kiilu td
16.2.L'i thi hdnt
16.2.1 X6,c 16.2.2 C6ct 16.2.3 G6i
16.2.4 Nhfrl 16.2.5 X6,c
Trang 9r26 14.1.3 Cdc bi6u tuong thdng di6p trong Msgbox 165
14.1.4 XAy dung tham s6 cho MsgBox 166
14.2 Phuong thri'c InputBox 166
14.3 Him InputBox 169
cAu rRUC olAu rHrdnr I.JONG TRINH t28 130 131 [ , -']b vbA I 35 -,BA 135
r31 .13'7 138 139 r42 | /1< laJ - -" ".'146 r47 I52 t55 155
159
t62
/BA
It
Trang 1018.3.1 18.3.2 18.4 M6t s6 18.4 l.
18.4.2 18.4.3 18.4.4 18.4.5 18.4.6.
t8.4.7.l8.4.8
18.4.9 18.4.10 18.4.11
Trang 11f , 201
- 204
:L 205 17.6 Nhri'ng su ki6n kh6ng ktit ho.p v6.i ciic rttii tu.qng 224
l7 6.1 Su ki6n OnTime 224
17.6.2 Su.ki€nKeypr.ess @dmphim) 225
cAc vi oqr vA rAp rRiNH vBA 18.1 Vf du hm vi€c v6,i virng 227
18.1.1 Sao ch6p virng dic biQt 22g 18.1.2 Sao ch6p virng chua xiic rfinh iZ2g 18.1.3 Di chuytin virng 230
18.1.4 Duy€t riLng 6 rrong virng x6c dinh 230
18.i.5 Thri tuc d6 xo6 cldng tr5ng 231
18.2.Vi du vC l)m viQc v6.i workbook vd worksheet 232
18.2.1 Thir tuc xo6 worksheet.dng 232
18.2.2 Thi tuc rim worksheer trong workbook 233
18.2.3 Di chuyiin nhanh t6i m6t worksheer nio d6 234
18.2.4 Khori 6 chri'a cdng thuc 235
18.3 Thay a6i cai ddt trong Exce1 236
18.3.1 Thay d6i chi dat ki6u Boolean 237
18.3.2 Thay cl6i cdi dat khr{c ki6u Boolean 23j 18.4 M6r s6 ham vd th0 ruc hfr.u clung khdc 23g 18.4.1 Hdm chuy6n s5 sang chfr 23g 18.4.2 Hdm chuydn AOi Uang md ti6ng Viqr 23g 18.4.3 Hdm t6ch s6 til trong chudi 241
18.4.4 Hlm v€ tfnh todn g6c 241
18.4.5 Th0 tuc sao ch6p dn.L6u theo kitju dac biQt 243
18.4.6 Hdm nQi suy tuy6n tinh 246
18.4.7 Hdm trich r6n, h9 vd t6n ct€m 24g 18.4.8 Sfi.dung Validation d0ng 251
18.4.9 Hirn xdc tlinh ID cira CpU 253
18.4.10 H)rm xiic dinh serial cua 6 dia c[.ng 253
18.4.11 Him xric dinh thu6 thu nhgp c6 nhdn 2013 254
209 2t0 2tl z12 z12 213 2t3 213 ,- .- -.214
215 21s ;- 216
t- _ _ 211
,, -.217
l_ 211
2r8 2TB zr9 220 220 22r 221 t _, 222
_ 223
Trang 12rOt uu vA vn rAruc r6c rRoNG vBA
19.1 C6ch thrlc t6i u'u md
19.2.Tdngtt5c d0 tinh todn trong VBA
su DUNG CAC OraU r<ldru ruArue cAo (coNrRoLS)
TRONG EXCEL
20.1 Gi6i thi€u chung vd conrrols 263
20.1.1 Form Conrro1s 263
20.1.2 ActiveX Conrr-ols 265
20.2 St dyng form controls tr-On bdng tinh 266
20.2.1 Cric cti6u khi€n trong Form Controls 266
20.2.2 Crich xdy du'ng v) m6 t6 cdc Form Controls 26g 20.2.3 C6c thudc tinh chung cia rli6u khitin 269
20.2.4 Thu6c tinh Control 2i,0 20.2.5 Lion kt5t vh di6u khi6n bdng tinh ti'ciic conrror 2i6
20.3 Sir dung ActiveX Control tr6n bAng tinh 2jg 20.3.1 Cdc di€u khi6n trong ActiveX Conrrols 2jg 20.3.2 Thu6c tinh Properties : 21g 20.4 K€t lu4n 2g4 Ti'i li6u tham khio 286
2sl
261
Microsoft l
Tuy nhi6n, r
n6u chi don thudn
thd gidi quy6t du.o,
thfi cdng Ngo)i ra
hodc c6 su k6t n6i
h4n cht5 tld, ng6n r
14" VBA) du'o'c tich
d€ cric bdi toiin tr6n
VBA ld ne6r Microsoft ptrAn mt chuy6n vd linh vu.c
chfng ta cd th6 srj r
nam )992), Excel 5
XLM vi ld m6t phir
97 (r'a doi namlggt
Visual Basic v6i cri,a
tru6c kh6ng m6.du,o-r
Office 2013 dd ra di hon, nhu'ng c6u trdc Office 2003 CDng v<
va phiit rri6n vi phi6r t4
Trang 13Microsofr Excel (Fxcel) ld phan mam n6i tiiSng chuyOn vc bang ,inh vh
F TJeTyo-c 16r nhi€u c6ng vi6c li6n quan d6n tinh toi{n, xi'rv dfi.li6u vd vE
lEr yu-Jsr uuuu raL r"":x
":frg vlgc lren quan d€n tfnh toi4'n, xil ll; dfi li6u vd vE
F & tin d6 chring ta c6 hoc chuyOn v€ thi5 Excel th6y nhu 6.t ong c6u nu6c tim.hi6u va quoc Et;;i q""'rrlr;"t re. tir ciic di6n
Tuy nhi6n, cl6i vi€c tinh todn, xt li; phf.c tap
chi don thuAn sri'
!,.
:11t:^fl?:i 11, cfrfns^1a co.th6 gap nhfi.ng bdi tortn mang trnniap di lap lqi
.j:::
I cue d9, ng6n ngfr' r.p-rrinh ri'n! aung "visual
Basic for appri.ution,*ff ili:
911 du'ec tich ho.p sin trong Excel tc gr,ip chfng o .o ifa giei q"r8r'"iei
cic bdi todn tr6n.
T{t,"^"t6i ng: hp.t$ n_frat tri6n trong m6i truong Office b6i tap rtodn
'ot ,fn:n -eT Fl.:I,-Word, Access, powerp_oint, vd k6 cd phAn m6m
u co rne su dung macro trong Excer 3 (ra doi ndm rgg0), Excel T \rq uvr4 (ra doi
1992),Excel 5 (ra rloi nam 1994) Khi d6 macro euo.c ur6i uang ngon ngo,
vi ld mQt phan trong bdng tinh Excer, kha ndng 0'ng dr,rng con rrarictr? E;.;
'a ddi ndm 1997) da denh 961 ru phrit tritin cfa ng6n ngi tap trinh ring dqng
ual Basic v6i cri'a s6 Microsft visual Basic ho)n tohn d6c l6p Excel phi6n b6nk!9lg m6'duoc phi6n bdn niv Tii5p theo ld office zooz
"a ga, ;ar;tie b6
l:i: a111 foi, *fng c6 giao di6n vd nhi6u tinh nang rioi, uji,e ,r"r,lJ"
,,?!?-a,ol,g,]u1 sp phr4t tii.1g_oni.", ng6n ngfr VBA ee" au .oc iare .apphit tri€n vd phi6n ban m6i nh6t h vea 2.0 (6ff.Jioio
"a ot *;;6:d:
t5
Trang 14d6n nay, vBA da cd nhfr'ng bu6c ph6t tn6n vuor b6c v6i m6r s6 khd nang kh6ng
thua k6m so v6i ngu'di anh em Visual Basic 6.0 (VB).
Ering chri ! lh offrce 2010 h phi6n ban cu6i cirng hd tro vBA, tfc h
Microsoft kh6ng ndng c6p vi phrit trir5n vBA n[a Nhung pticn uan vBA 7.0 de l},
qur{ dt cr{c tinh ndng cho nhfrng ai dam m€ kh6m ph6 ng6n^ngfr lap trinh ndy.
ffinh l-l: Cira sd Microsoft Visual Basic trong Excel20l0
Visual Basis for applicatiorrs: chuofu-TxGill
i+S tlt E'lit !rew !nseft Fgrnrat eebug !un loots {r1,tJn; [indow llelp
' Ln1,Coll
- I/BAProjert
H -.jt ii _i
L:i $ VBAProiect (thuonq
l= tl t'licfosoft Excel Obje
€ sheEil (5hEer1)
! i €sheetz(sheer2)
; : Elll sheer3 (shEer3)
4ii) sheet4 (sheetl)
About [licros'oft Visual Easic ibr
lvdrninqi Thi5 conFller proqrEm is protected bt,
copyilght law and inlerndtiqnEl lreaties.
Unouthori:ed reproduction or dislribution c,F this progrdmr o/ any portron of tt, may result in severe civil dnd rrimindl penEltiEs, 6nd D/ill be Drosecuted
to lhe mdxinun extent pDssible under ld*.
H)nh l-2: Gi6i thi€u v€ phi€n bin VBA /.0 trong Excel 20t0
Mi
hiQn thec
nao d6 tAutoCad.ng6n ngfi
hay ph6i 6bi6t til Ex
v6'i c6c hidgng hon
tu'ddng dr
uu tliiim tl
dich thdnh
Excel Ng, v6i virus n
D.3 t
tuong tl6i r
phuong thi
VBA c6 rhphAn mdm
kinh t6, tii
m6n cria miC6m
bi6t li Ban r
fng dgng c
Nguy6n Dulhoin thdnh c
TrongExcel20031Excel 2010 r
ngdn ngfr V
Unicode Do
tuo,ng rltii ho
N6i dung cu(
trong m6i tru,
Trang 15-: Trong lAn t6i ban thi'tu niy, ngodi nhflng ki6n thf'c lfp trinh vBA trong
Excel 2003, chring tdi da cdp nhdt nhi€u n6i dung li6n quun dtitr Excelz}}i,
Excel 2010 nhu khai thi{c vd sri'dung Ribbon cho d6n nay, u6n oe viet noa
ngon ngfi' vBA hay vB6.0 thucrng kh6 khdn do chfng kh6ng cluo c h5 tro.
Unicode Do d6, cu6n sdch ndy hu6ng d6n n6i dung vi& hoa vge m6t c6ch
tuong d6i hodLn chinh, gi6p ich cho nh0'ng ai xiy o[ng phAn m6m N6i dung cuiii hu6'ng d6n chi ti6t vi€c xay agng ptrArimcm m6t ci{ch bdi bdn
tr6n'Excel-rong mdi truong Excel
c<: l0l0
17
Trang 16Si' dgng chf'c neng tU ghi macro (Recorder Macro) ld ph.uong ph6p hay
ti6 tirng bu6'c hgc ng6n ngfr' VBA, cldc biet ld v6'i nhfr'ng ai bil dAu tim hiilu
VBA V6i chilc ndng niy, Excel sE ghi lgi todn bQ cr{c c6ng viQc ch(ng.ta dd
thgc hiQn tr6n b6ng tfnh (bang clc ky t-u dugc go til bdn phim) mQt c6ch tuan tU.
Vn khi d6, chring ta c6 thiS nim b6t duo-c qu6 trinh thu'c hipn c6ng vi6c nho' vi6c
chay (thi hinh) macro b6i c6c cdu lQnh ild tluo-c ghi lgi trong n6 Ngoii ra, cdc
dbng lpnh duo c ghi tg ttQng d6 sE girip chfng ta tim hi€u ngdn ngfr' l4p trinh nhy
vi c6ch thri'c thgc hiQn.
Trolg Excel 2003, menu l\tlacro du'o-c mdc dinh san c6 o'trong Tools 6'
d4ng truy€n thdng vd c6 thC tim th6y mQt cdch d6 ddng Cdn trong Excel2007
vi 2010, menu duo.c thay bdng Ripbon vd mdc tlinh kh6ng hiQn ra, chring duo.c
qudn l! trong menu Developer De hi€n thi menu Developer, chring ta thr,rc hiQn
nhu sau:
- Trong Excel 2007: BAm mit Office Button r'', trong cila s6 ExcelOptions chgn Popular, sau tl6 chgn Show Developer tab in the Ribbon(Itrnh 2-1) Khi d6 Ribbon Developer s€ hi€n thi, Macro th€ hi6n du6i dang
Ribbon (Hinh 2-3)
- Trong Excel 2010: B6m File vh trong danh sdch thd xu6ng chgn
Options Trong cri'a s6 Excel Options chgn Cristomize Ribbon, .uu i6 .honDeveloper cia danh si4ch Main Tabs (Ffinh 2-2)
Trang 17hirne ai bat dAu tim hi€u
ac c6ng vi€c chfngta dd
n phim) mQt c6ch tuan t1r'
c hign c6ng viQc nho viQc
f trong n6 Ngoii ta, cdc r€u ng6n ng[' lfP trinh ndY
rh sin c6 o'trong Tools d
ng Cdn trong Excel 2007
rh6ng hiQn ra, chfng du-o c
reloper, chring ta thgc hiQn
'41., trong cila s6 Excel
loper tab in the Ribbon
Macro th6 hiCn du6i d4ng
mh s6ch thA xudng, chqnnize Ribbon, sau d6 chqn
Trang 18E€ ghi tai nhulệtre$ do,"q x6y ra khi thao t6c trong Excer, chon
n(tRecorcl Macro (Ifinh 2-3) c&'a s6 Re"ọo Macro hi6n ra rrnni z-+l v6i c6c lu,a
chon sau:
- Shortcut kev: phim t6t d6 thuc hiQn macro d6, luu f ld khdng rrdt trDng
v6i phim tit đ, c6 trong Excel
- Store macro in: Noi ati luu trfímacro, cd nhi,3u lua chon kh6c nhaụ
+ This Workbook: Luu trong Workbook hi€n hinh (mdc dinh)
+ New Workbook: Luu Workbook m6ị
+ Personal Macro workbook: Luu trong personal.xlsm (hoac
Personal.xls nrlu dirng Excel 2003) Nhfịng macro duoc luu trong personal.xlsm
tl6u sri dr,rng duọ'c khi m6'Excel
E
tl, "r,-.1 [f,s."*rr'_l Hinh 2-4: Cira sd Record Macro
c6c macro trong c6c workbook khi4c nhau c6 th6 srịdung u6t cri,hic nio
khi cric workbook dang m6'(k6 ca st'dung chfng tir.workbook kh6c) Trong
(select) chi tluọ c ghi lai khi c5 c6c hdnh
dung hay thay tl6i ph6ng chfị Cfrng c6
nhfr'ng thao tiic thuc hi6n niiu AOi tụ-ong
r,^ macro crd truo-c luu l4i v6i t6n x6c trinh trong Module,
lVlO fq^ ra rr^6^ ^.,;.-)-r
Mo tao ra rrong qur{ trinh ghi vi ld mOt phdn cfia Workbook.
hay t ci{ch tlon gidn ld no-i luu trfímacro, n6 c6 thiS chría moi
Di€u kiQn d6 c6 th€ thgc hiQn ghi macro:
- TrOn workbook dang duo-c kich hoat (ActiveWorkbook)
- TrOn wiii-kbook m6ị
Trang 19'ang Excel, chgn nft
l-tnh 2-4) v6i c6c lua
t-rin ih cria tOn macro
r sLi hoAc k! tg gach
c ,Jinh trong Module,
t p:ldn cira Workbook
'.- n6 c6 the chri'a mOt
oc rtcu hon v€ phuong phr4p thp'c hiQn, chring tahd,y thuc hdnh c6ng vi6c
-' tU dQng macro nhu'6'du'6i cldy.
2.1 Tqo macro bing chrlc nang Recorder Macro
Chdng ta hdy ti6n hinh tao macro dAu ti6n bing chf'c ning tq' ghi macro
]'- lung macro ndy trinh bly ton vi dia chi cta ban, c6ch thu.c hi6n nhu.sau:
l Tai Ribbon Developer chgn Record Macro (Ffinh 2-3).
2 Trong Macro name: G6 Dia-chi-tuyet_doi ae aat t6n macro d6 (Filnh
t-3 Chuy6n sang Shorrcut key: O6 tr6ng (thgc hi6n vi€c ndy sau).
4 Trong Store macro in: mdc dinh ld This Workbook
5 Trong Description: 96 n6i dung "Nhap rlia chi rrong 6 83" vd b6m oK.
6 Khi d6 nft Record Macro trd thdnh Stop Recording (dilng ghi) s6 xuAt
S:- Recording Nt5u mu6n di3 dirng ghi macro.
7 Trong qud trinh ghi macro, nft Use Relative References mec ctinh
r: -:_s t6c dung (Ffinh 2-5)
8 Trong Sheetl b5m vdo 83 vd gd r6n cria ban 0 o ou'ol go t6n ngdnh,
: ! -jreo li t6n truong cirng v6i clia chi
9 Cho todn b6 6 ch['a ciic ch0'thinh rl6m vd nghi0ng
qbe -e-t1 ,he-i?" q1e9!l- "r !(
Hinh 2-5: Thuc hi€n Record Macro trong Excel
2lfrublv DOi hAc Md Ola thtjt
iberck).
Trang 20Ti€p rheo, chfing ta se tao mQt macro gi6ng nhu tr€n cfing bing c6ch tg
ghi macro Chi khdc li macro rru6'c srj dung tlia chj tham chitSu tuyQt-ddi, cbn
macro sau sE s0' dgng quan h6 tham chi6u 6 tuong d6i lquan h6 v6i vi tri d rluo c
kich hoat ban dAu).
l Chqn Sheetl, b6m vho 6 Bl l.
2 Trong Ribbon Developer, chon Record Macro (Flinh 2_3).
3 Trong Macro namer gd Dia-chi_tuong_doi oe oat t6n macro d6
ftIinh 2-4)
Shift ve 96 chfr'A, nhu v{y phim t6t sc
-5 Trong Store macro in: M{c tlinh li This Workbook
6 Trong Description: G6 n6i dung "Nhdp dia chi d dAu ti6n" vd b6m oK.
7 Trong Developer, b6m vio nrit use Relative References cho n6i l6n,
tri'c ld chri'c ndng tham chi6u 6 tu'ong e6i co tr4c dpng Excel so tii5p tgc gil
macro v6i quan h€ tuong tl6i cho tt6n k thorit kh6i Excel, hoac chring ta b6m
lai vio nrit Use Relative References.
8 Go t€n b4n, l6p, t6n rruong vi dia chi trong c6c 6 Bl I,BlZ, Bl3 vh
B14 NQi dung thti hiQn nhusau:
Phah Tq .trqdng
Trrldng D4i hgc M6 Dia chAt
xa D6ng Nqac/ Ttr Li€m, HA NQI
9 Cho todn b6 ciic chO' dAm.
10 Chen 6 B15
I 1 B6m vdo nrit Stop Recording d6 kt5t thric.
chring ta c6 th6 sil dung chii'c6 ddu titing viQt, tuy nhi6n, khi sang cri,a s6
MVB thi chfi' d6 sE rat kh6 rloc D6 doc duo c chfi'ti6ng vi€t, chring ta pirai thay
cl6i font chfr'm{c dinh courier New (western) sang .vnxxx (theo TCVN)
Ghi chri: Khi su dlrng.quan ha tham chi€u 6 tu.ong d6i, ddu tion chon 6
giic (Activecell) truo'c khj ;(im nrit use Relative Refereies, cdc 6 khdc sd thd
hi€n quan hQ tham chi€u tuong aifi val 6 giic d6 cirirg ta c6 th€ lrya chpn hdn
ha'p dia chi tuy€t aai v9 tu'ong d6i trong qud trinh ghi macro Tuy nhian, kh6ng
nan sn d1'tng phuong phcip ndy vi qud trinh tham chi€u sd tQn x6n, kh6 theo d6i
_ - Dc sri'dgng tham chi6u tuo-ng d5i trong su6t qur{ trinh ghi macro, n6t
Use Relative References lu6n n6i @d t6c dung)
- D6 sil dung tham chii5u tuy6t d6i trong sudt quii trinh ghi macro, nft Use
Relative References lu6n t6i (kh6ng tric dqng)
Trang 21(cdn gqi li thg'c thi hopc chay macro) Chring ta cho thy'c hipn macro tr€n tir.
Sheet2 nhu sau:
L Chon Sheet2 vi b6m vio 0 ndo d6 ngodi 6 83
2.Trong Ribbon Developer., chon Macros (Ilinh 2_3).
3 B6m vdo macro c6 t6n Dia-chi-tuyet-cloi trong danh siich macr.o (Hinh
2-6) NOi dung ghi chf cta macro eO sC tfre'irien d.Desc-ription
Hinh 2-6: Thuc hi€n macro til c&a sd Macro tai Sheet2
2.3.ThVc hiQn macro khi su dUng phim t6t (shortcut key)
na
l Tai Sheet2,bdm vho I 6 b6t k! (vi du 6 Hl4).
2 Bdmphim ctrl+shift+A, khi d6 t6n vd dja chi sE xuAt hi6n clu6i 6 d6.
3 Hay thi hdnh macro rld bing phim t6t tui cric vi tri khdc rrons Sheet2.
z-)
Trang 222.4.Tqm dung khi thgc hiQn vd tho6t khdi macro
Hinh 2-7: Tam dUng khi thuc hi€n thrl tuc
cri'a s6 Microsoft visual Basic hiQn ra th6ng b6o
lilXiXlilflt (code excecution h;; ;;;" inte'uited) c;-;" ruons hop rya
- Continue: Thrj tuc d6p tgc chay binh thuo,ns.
- End: Thri tgc ding tai cldy.
- Debug: GO.r6i trong thi tuc (xem chi ti6t trong chuong l6).
Tiry trudng ho.p c1r thd md chring ta chgn m6t trong ciic truong ho.p tr€n.
Khi sri'duns ving.l?p,
l6u kh6ng can thrin thri tuc sE kh6ng bao gio k6t
thric vi diaiu ki€n tnoat lnoi vdng fupkiong duqc th6a'mdn viau nhu.thri tuc
du'6i tfdy: e rr -D eeYv r'vq 'r4rr' v
'Thri tgc l_)m vi6c t6t, kh6ng bi I6i
Fange (i 83" ) se Acrrvece Il Eomu Rang€ (, B4i J , SeL€c Range ('85') selecr
iil"'Ji.'ill;i;iTllaRrcl ' 'rruonq Dar hoc M6 Dra chlic, Actlv€Celt FomulaRtct _,,xg
thuong chi chri'a
Trang 23r- -.r\ qud trinh thy'c
Range ("AI", Value = i
MsgboxRange (,,A1 ) Value
LoopUntili>10
End Sub
2.5 Luu tqp tin c6 chfa macro
Sau khi dd tao duoc macro, hdy luu t6p tin chfi'a ch6ng v6.i Excel 2003,
::ng viQc luu binh thuo'ng voi du6i xls thuong gap v6i dudj xls, r6p rin dd c6
.i chri'a bing tfnh ri6ng hodc ca macro Nhu'ng til Excel 20oj tr6 di, m6 hinh
: -an lf tap tin kh6c di chring ta sE rh6y su phan chia rach rdi gifr.a rdp tin thdng
roxg chi chri'a b6ng tinh v6i tru.ong ho.p chfla macro nhu.sau:
- Dudi xlsx: Chi cho phdp chir"a bAng tinh, kh6ng cho ph6p cht.a macro.
- Du6i xlsm: Cho ph6p ch['a macro trong bAng tinh
- Du6i xltm: T4p tin tam thoi c6 chil,a macro.
- Dudi xlam: Tdp tin 6'dang Add-In c6 chila macro
- Dudi xls: Tdp tin 6'dang cfr (Excel 9j - 2003).
Trang 24:Ec.l 97-m]T.npl.l f {0 m.cditq 4ddr ld d4Td (T!b d.tinit.dl F M)sw h.(k.d-out itcs toii j untoot ra r u)
iCsV {u.(norh) f ,!t,
choorc dil cototr wiil b jcsv(us_rcs) f o9
iDIF (D.u Inl.ftEnq rorn.ll C dio
Hinh 2-8: ThiCt lQp kidu du6i luu khi sir dung Excel2OO7 (2010)
Nhu vfy, khi xdy dg'ng macro trong Excel 2OO7 (2010) chring ta cAn phdi
sri'dr,rng tlu6i xlsm Excel2007 (2010) mac tlinh luu c6 du6i xlsx (llinh 2-8), do
d6 cAn thitit Qp luu m{c dinh v6i du6i xlsm nhu sau:
- Excel 2007: B6;m nrit Office Button, trong ct'a s6 Excel Options chgn
Save.
- Excel 2010: B6m File vi trong danh srich thA xu6ng, chgn Options
Trong cila s6 Excel Options chgn Save.
Sau cl6 chen Excel Macro-Enable Workbooks (*.xlsm) trong Save file in
this format (FDnh 2-8) K6 til ttdy, c:ic tfp tin Excel duo-c luu v6i tluOi m4c ttfnh
li xlsm, k€ ci bdng tfnh khdng ch['a macro (hay dU r{n VBA)
Trong trudng ho.p chring ta luu tAp tin c6 chf'a macro v6i dudi xlsx thi
sao? Khi tl6 sE c6 ngay cinh b6o (Hinh 2-9)! Th6ng b6o d5 n6i ring ki6u dudi
niy khdng cho ph6p chri'a macro (hay dU dn VBA) N€u vQi ving bdm Yes thi
sE tri gid ngay, khi tl6 toin bQ macro (vd c6c dU 6n VBA kh6c) s€ bi x6a.s4ch!
Trong trudng ho.p niy phii chgn No, sau tl6 chgn cludi xlsm phil ho.p tl6 clim
bdo cdc macro md chring ta m6'i x6y dung du'o c luu git'
26
Trang 25[bm; trong Save file in
r luu v6i du6i mac tlinh
rBA)
rnacro v6i du6i xlsx thi
b aO .toi ring ki6u dudi
lr v6i vhng bAm Yes thi
To sve a fle with thF ftitfB, d* t{o, md thm drm a mamcnaHcd file vpe in he fie Type list.
To cstirDe savinqda mm-fie *trkM'd*YEs'
,Hinh 2-9: cinh b6o khi tip tin chrla macro dudc luu v6i du6i xlsx
Ntiu chi ldm viQc v6'i bang tinh th6ng thudng, ch6ng ta n€n luu tip tin c6
du6i xlsx nhim lo4i b6 crlc macro ho4t d6.ng, trong d6 c6 th6 chri'a virus
21
Trang 26- D6i tuo3g (object) trong worksheet ho{c bitSu d6.
sau
- Thanh menu cta Excel 2003 tr6 v6 tru6c hoic
Ribbon tir.Excel 2007 vd
- oidu khirin trong Form controls, ActiveX contrors,
3.1 Ihgc hi?n tr} mQt d6i tugng v€ trong worksheet
c6 nhi6u d6i tuo.ng vE trong worksheer
c6 thti tli6u khi6n macro, vi du
nhu ctiii tuo.ng aO hqa trong worksheet Cric bu,6c thg.c hiQn nhu sau:
l Chqn Sheer3 hay bdt cri.worksheet nlo cdn tr5ng.
2' Vio Ribbonrnsert vd chgn shapes
Trong shapes c6 nhirSu d6i tuo.ng vE
3 V6 hinh hinh chfi,nhat vedinh dpng l4i 3D cho rlgp
hi€n cha 1.
2.
Gkhoi ch6
vi bdm tt
phai chu
trong.daVr
chring th
thrh tgc
ifi' Uf,
pivotT
Trang 274 G6 nOi dung "Dia chi tuy€t d5i" veo
phii chudt vdo r6i chen Edit Text ti'thpc tron ,ai, |""-ao ffi;;
"g"aj ecit "".^'
- , 5.Jdm phdi.chuQt vdo hinh chfi'nh0t d6, chgn Assign Macro dii g6n th[
tuc cho tldi tu-ong 116.
, A ^!, Trone Assign Macro, chgn macro Dia-chi-tuyet-doi (Hinh 2-6) vir
bdm OK
Nhu vfy, hinh chfi'nh4t crd cru-oc g6n didu ktri6n thfi tuc vd chring ta rhuc
hi€n chay macro:
1 Chgn I d nio cl6 (vf ds nhu: 6 Jl3)
2' Bdmvdo hinh chfi'nh6t tr.n, macro Dia-chi -tuyet-doi s€ thgc hign.
Ghi chri: Da di cluy€n d6i twng d1 hoa (c6 gcin criiu khidn macro) ra
tlii,cna
vi bdm trdi chuQt thi ma*o
_sd tnurc htcn) cdn nVi
^"a" sri"-rinrro *ia", [i*
phai chu6t tan d6i tryng d6, chqn Aisign Macro vd rqra chgn macro ndo khdc
Trang 283,2 ThLrc hi?n tt thanh menu Excel 2003
Til thanh menu Excel 2003, chring ta c6 thti tqo ra ciic menu mdi md khi
lga chgn thi macro sE thq'c hi€n Vi dg nhu tao menu mdi c6 tOn Macro2 nim
ngay si{t menu Help, menu Macro2 c6 chta menu con "Work Address" Tru6c
khi thqc hiQn, phii chic chin rang Workbook chfia macro dang duo c kich hoat
(nt5u kh6ng phii m6'ra) Cdch thu'c hi6n nhu' sau:
l Trong menu Tools/Customize, chqn tab Commands trong bing
Customize
2 CuQn xu6ng ddng cu6i cirng vh chgn New Menu trong Categories
(Flinh 3-2)
3 Gifi'trdi chuQt 6'New Menu trong Commands vi k6o vio ddng menu
c4nh Help (tui y chAn vi tri trong thanh menu).
4 Birmphdi chuQt vho New Menu trong thanh menu, thgc don t6t hiQn ra.
5 Thay tOn m6'i trong Name li & Macro2 N6u chi cAn menu n)y (menu
mq) thi bdm vho Assign Macro tl€ chgn macro (Ffinh 3-3) Cdn n€u cAn th6m
cdc menu con (menu item) thi khdng cAn g6n thir tr,rc, vi menu mg chi mang tinh
quAn lf.
l€ ";;, ri,.:,iti i:"rrr'l J:ii,rk r
*il:nru,€di .vi"* In,*t irLu d q!a:1lirr iu lr,'l!
1000/o ;
Ir 1
r{_t4
Hinh 3-2: Tao New Menu trong thanh menu crla Excel
Fgrhat Iools qrta Utndm t"tp lffil
riq
Trang 29cic menu m6'i md kht
si c5 tOn Macro2 nim
[-.-rk Address" Trudc
o ,lang duo-c kich hoat
ommands trong bAng
t{eau trong Categories
ri k6o vdo ddng menu
tu thgc don tit hiQn ra.
d cin menu ndy (menu
Trang 30(Hl
V6thuniy
Trang 31it_i r -ur, chgn Macros.
: ' _t;Lr triii vd k6o chu6t
- Reset Button Image: Thitit tr4p lai hinh g6c cria menu con (vi du * ).
- Edit Button Image: Srj,a hinh cfia menu con theo y mudn.
- Change Button Image: gOi trinir cia menu con (Flinh 3_5).
- Default Style: ThitSt hp kitiu mac dinh cfia menu con, g6m c6 hinh vd chfr
- Text Only: Chi c6 chfi.trong menu con (kh6ng c6 hinh)
Ej d."-r,,-l:,
HoD Inr.t p.gr rayout fornurrr oar , ahlong 2,xrsm - Miooioft Ex<el
€Vraw Vilw Ocvetoprr
3.3 Thgc hi?n trl d6i tugng trong Form Controls
i ^;0n hiQn h['u trOn
[-:-_: no Khi b6m vdo
r - -i:': luOn.
r: :^-.:cr duoc cdc menu
r \l=,-ro.r cdn c6 nhfr.ng
n iu
:4
";
l'
;-5
';' :
Trang 323.4 ftay Odi tga chgn trong macro
_ N€u mu5n thay rltii cdc lg'a chgn chi ti6t rong.macro, dAu ti6n chring ta
vdo Ribbon Developer vd chgn Macros (hopc phim tit Alt+Fg) cti'a s6 tvta"cro
hipn ra nhu hinh 3-8 v6i danh s6ch toin b6 macro.
o Options: Khi chgn pptions, cta s6 Macro Options hiQn ra (3_g).
chring ta c6 the thay tt6i phfm tit vd m6 t6 l4i c6ng vi€c macro trong
Description
' Edit: Khi chon muc niy, cfi'a s6 Microsoft visual Basic (MVB) hiQn
ra vi con chudt sE nh6p nhr{y t4i vj tri cia macro tI6 chfng ta c6 thii sri.a
AOi nQi dung tireo y mu6n,
"a *i, JiC" ph6i ctring md l€nh VBA
r Delete: X6a macro, tru6c khi thgc hi€n Excel sE h6i c6 chic ch6n x6a
hay khdng?
r Macros in: Hi6n danh sr{ch c6c macro tDy thu6c vio c6c truong hop
chon trong h6p cuQn thd xu5ng
- All Open Workbooks: Todn bQ workbook tlang m6
- ThisWorkbook: Chi trong workbook hi€n hhnh.
- Tdn ttmg workbook dang duo-c m6.trong Excel
Ngay phfa du6'i mgc "Macros in,' li Description (mdu xanh),
Description mO td sg hoat ddng c0a tilng macro trong dbng phia du6i
M&o nami Ua-.H-lr4ot_doj Shqtcut !.yl
ar-i -"il l 06<rbtlml inhqp o".6 u*o u *
Trang 33o c6ch l: vbo Developer vh chon Macros, tim t6n macro ndo ct6 vh b6m
Edit
o ci4ch 2: vdo Developer vd chgn visual Basic (hoac phirn t6t
Alt+Fll).
4.1 C6u trric cr?a sd mVB
Crh'a sd MVB h noi quin lf,.luu tr[' todn_b6 c6c thri ruc (macro) cfrng nhu
c6c dg 6n xdy dung trong VBA C6u trfc cria sO Ir{Vg nhu sau:
' ' Ddng tr6n cing g6m c6 biiiu ruo.ng vd t6n cri'a s6 MVB, tiiip d6 li tOn
cria Workbook, cu6i cDng li du 6n chring tu dung thgc hiQn.
Trang 34' Ddng th0' hai !d cdc menu didu khirin chf'a trong thanh menu crla
Range('86').Select Acbivecell.FormulaRlCl - nxa Ddng Nqac,
Hinh 4-l: C&a sO Microsoft Visual Basic for Applications (MVB)
36
Trang 35ftranh menu cta
,ts=-5.+
HUioO wiiE
- .g {o.
:'o
E
c ,-
F
F?SFFE E-o'diS 3^5c
<o
Er oX
Vr tri hang va c6t cira chuof
Hinh 4-2: cdc nrit l€nh trong c6ng cu ti€u chudn cia ciya s6 vtvg
Hinh 4-3: Ciic thanh c6ng cu Debug, Edit va UserForm rrong MVB PhAn di€n tich l6n nh6t cri,a s6
D6 lh noi soan thio m6 l6nh (code) ha
thir tuc, him s6 du-oc hiiin thi trongExcel C6 thri coi module lh noi qudi(Function) Phia tr6n cfi'a s6 soan codkiQn" N6i dung ndy sE rlu.o-c d€ cdp chiCri'a s6 nim du6i cins
MVB Oe ni6n thi Immediat!
Window (phim t6t Ctrl+G) c
JhOnp thuong cri'a s6 Immediate nim pl
chuy6n, thay t16i kich thu6'c theo y nuon N6i dung ndy so duoc d6 cdp 6.mr,rc
4.3.
t|lc(Sc"hdtthimacrophaildtltu
tLlanF, cdn hdm W tq.p (Function) thi chi ldm vi€c ,r";;t."r:l;?r!:;;I"tr?:;
vi vQy, chfing ta str dung thu tuc vii hdm ,n ,o,o ae iay tha t ng* macro n6ichung.
Trang 364.2 C'ila sd sogn thdo code (Code window)
DAy l) noi chi'a vi qu6n ry c6c thi tuc vd him tu'l0p.M6t th0 ruc duo-c
bit <Idu v6'i Sub v) k6t rh(; b6'i EndSub ua-,1, rap b6,;i; il^ing nunction vd
k6t thric bo'i EndFunction
' [)i
, *._,_ tyl :.1 : i
Funct dung
cAy v
chri t
chLinl d0ng
chf tl
se oe l€nh.
l6nh t
,Annat, I
tgc vil'kh6ng
Hinh 4-4: Ct}a s6 soan thdo code
Hinh 4-5: Danh sdch cdc chuong tr'inh duoc xay dung rrong ting module
Trang 37[t thu tuc cluo-c
dung b6n mdu xanh da troi (Flinh 4-4, 4-5) Noi
- Tit5p theo ld noi so.n thio- md lQnh (code),.ch'ng
quyist e;nn sg lim vi6cctia macro chring ta c6 th6 r,iu aoi, inc- uot noia"ng;iLi; cho phir ho.p.
- Duong mau
$3n.li€n _dai c6 y nghTa ph6n chia ci4c Sub (thri tyc),
-u"ro.''
Khi c6ng vipc hodn thdnh, chuy6n sang 6 c3 Sau d6 b6m nft dil.ng ghi
acro lim vipc nhu tht5 n)o bing cr{ch
chring ra m6,module nho c6 chi,a th0
sau (116 lu.o-c b6t nhD.ng khodng tr6ng
Sub Kiem_tra ( )
'Macro recorded 12/3I/2OlO by phanTuHuong
Range("r-3").Select
Trang 38V6i thrl ruc ho{c h}m, chring ta
quy djnh cria ng6n ngfi.VBA thi mji cO
!hinh 4-
Trang 39Ba lenh tu nhi6n xu6t
h nqc dinh sEn trong
roa nhring ddng code
c-lim vi6c cria chring
a rhuc hiQn c6ng vi6c
se eifp chring ta trd
r djng ngi'phrip Di5
lenh thay vi 96 chfi'
Joan md theo dring
I thuc hi6n (thi hhnh
n sodtl Trong khi d6
il the hi6n tr6n Excel
Hnh 4-6: Cira sd lmmediare
Vi du tai hinh 4_6, tirng c6u l6nh thuc hiQn c6ng vi6c nhu, sau:
Worksheets (,,Sheet5,,) .Activate ,Klch hoat Sheet5
Ranqe ("e2,,1 Sefect ,.h^- A r.
Range ("B5"r.Font.co-Iorrndex = 3 ,Bi6nchrl tai 6 Bsthenh miu dd Range (,'BS,, r.Font.Bo]d = True
Ranse ("8s,,).uon rraric = rrue f:H :l$ :li 3 lfuiTnru,,"
n,* oli :-":,ru1o.ft, c0,a s6 MVB s€ hi6n thj Vf ds tai
rt6 kh6ng t6n tai (Flinh 4_8t.
4.4.HiQu chinh macro trong MVBCri'a s6 MVB (Hin
nhu ffong w";; cr,l"r' 'ffiT$",::&t#lfiTS
Norksheebs (" Bai bap" ) Sefect
Trang 404,4,1,Thay O6i ten c0a th0 tuc
can t ngen thri tr,rc Kiem_tra lai bdng cdch
Sel-ecti_on Font Bold : True
Sel_ection Font ItaIic = True
Hdy ch4y rht'rhi tuc tr6n, chic ch6n k6t qu6 v6n nhu tru6c khi srl'a Nhu
vay, sau khi ghi macro, ndn loai b6 nhfr'ng md l6nh kh6ng cAn thit5t, trdnh vi€c
vBA thg'c hiQn nhfr'ng cdng vi6c thila D6 loai b6 rnd l€nh ihila, chring ta phai io
s6nh gifla c6ng vi6c da thg'c hiQn tu'b)n phim v6i n6i clung m6 cira macro ghi
lai, tir tl6 tim ra su khdc nhau gila ch(ng Ngodi ra, c6ng viec ney cdn ddi h6i
42
Sub Address_Abs o ' Ldclresa Abs Mscr:cr
' Enter address irr cefL E3
Range (" 83' ) SeIecE ActiveCeJ_I FormulaRlCl =
Range (" 84" ) 9etect
At
Ac Kc Ac
R;