VBAexcelphan 1 Ungdungtrongnganhgiaothong

You might also like

Download as pdf or txt
Download as pdf or txt
You are on page 1of 78

P PH H N N I I: : M M u u

1. Tng quan v thit k v t ng ha thit k cng trnh giao


thng
Cng tc thit k lun c mt v tr quan trng t khi lp d n cho n khi thi cng, hon thnh
v a cng trnh vo s dng. T trc n nay, cng tc kho st thit k c bit n nh
mt qu trnh gm nhiu cng on khc nhau, m mc ch cui cng l xc lp cu to ca
cng trnh, cch thc thi cng ch o to ra cng trnh trn thc a v phng php khai
thc cng trnh mt cch hiu qu nht. Kt qu ca cng tc thit k c th hin di dng h
s thit k, ngha l qu trnh thit k nhm n vic to ra mt b h s thit k, m trong n
m t mt cch y ton b mc ch ca qu trnh thit k. Thng thng h s thit k bao
gm nhng thnh phn c bn nh sau:
Bn thuyt minh: ni th hin nhng c s cho cng tc thit k, lp lun ca ngi thit
k v gii thch nhng vn c bn ca phng n thit k.
Cc loi bng tnh, bng thng k: ni trnh by cc kt qu tnh ton trong qu trnh thit
k, l c s cho vic lp bn v v xc nh chi ph u t cho cng trnh.
Bn v: ni th hin chi tit nht cu to ca cng trnh cng nh phng php ch o
thi cng cng trnh.
D ton: ni th hin cch thc xc nh tng mc u t cho cng trnh.
Mc chi tit ca nhng thnh phn trong h s thit k ph thuc vo yu cu trong tng giai
on ca qu trnh u t cho cng trnh. V d giai on lp bn v thi cng i hi mc chi
tit cao nht.
Nu xem xt k hn bn trong ca h s thit k cng trnh giao thng th ai cng nhn thy rng
chng c mi lin h cht ch vi nhau theo mt quan h logic kh r rng, v d cc kch thc
hnh hc trong bn v s phi ph hp vi kt qu tnh ton c trnh by trong cc bng tnh.
iu ny ni ln rng, khi m t mi lin h trn thnh mt chui cc lnh th ta c trong tay
thnh phn c bn nht ca t ng ha thit k cng trnh giao thng. Vn cn li l tm
kim gii php thch hp thc hin t ng ha.
T ng ha mt cng vic c hiu l cng vic c thc hin t ng hon ton hay mt
phn nh c s tr gip ca cc thit b. V d nh qu trnh ch to xe hi c t ng ha
nh h thng robot trong cc dy truyn sn xut. Trong lnh vc thit k cng trnh giao thng,
do sn phm ca cng tc ny l h s thit k, cho nn thit b tr gip ph hp l cc h thng
c kh nng to vn bn, tnh ton kt cu, v cc i tng hnh hc, dng m hnh....
H thng thng tin, bao gm phn cng (my tnh, my in, my qut...) v phn mm (cc
chng trnh ng dng), v ang c trin khai rng ri trong khp cc cng ty t vn thit
k cng trnh giao thng bi chng c nhng c im rt ph hp cho vic lp h s thit k
cng trnh:
My tnh cng vi cc phn mm chy trn chng cho php thc hin nhiu cng vic
khc nhau nh: phn tch kt cu, v i tng hnh hc, to vn bn, dng m hnh...
Tc tnh ton nhanh, iu ny cho php a ra nhiu hn mt phng n thit k vi
thi gian c th chp nhn c.
Kh nng lu tr v tn dng li d liu t hiu qu rt cao, iu ny cho php ngi thit
k c th tn dng li ti a d liu c t trc. V d, vi h thng cc bn v in trn
giy, vic tn dng li t hiu qu rt thp, hu nh ch mc tham kho thng tin, trong
khi , nu nh cng cc bn v ny c lu tr trong my tnh, ngoi vic cho php


tham kho tng t nh bn v in trn giy, n cn cho php tn dng li chnh cc thnh
phn trong bn v chnh sa, k tha, v kt qu ta s c c mt bn v mi t
nhng d liu c.
C th ni rng mc t ng ha thit k cng trnh hin nay ang nhiu cp khc nhau,
ty theo tng cng vic c th, iu ny c th hin r trong cch thc to ra tng thnh phn
trong h s thit k. V d, trong thit k cu, phn phn tch kt cu c mc t ng ha rt
cao, nhng vic to bn v li c mc t ng ha thp hn nhiu. Tuy vy, xu hng nng
cao mc t ng ha ang ngy cng r nt bi s pht trin rt mnh ca cc phn mm
chuyn dng, chng ang l cng c h tr khng th thiu cho cc k s thit k, ng thi l
thnh phn ch cht cho qu trnh t ng ha. Nh chng m vic phn tch kt cu cng trnh
tr nn nhanh chng v chnh xc, nh chng m vic a ra cc phng n thit k ca tuyn
ng cng nh vic to m hnh ba chiu ng tr thnh hin thc.

Hnh 1 T ng ha thit k hnh hc ng t vi Civil 3D 2008




Hnh 2 T ng ha phn tch kt cu vi Midas Civil

2. i nt v cc phn mm dng cho thit k cng trnh giao
thng
Cc phn mm dng trong thit k cng trnh ni chung rt a dng v h tr hu ht cc cng
on trong qu trnh thit k. Ngay t cng on kho st a hnh, ton b qu trnh t x l d
liu (bnh sai, chuyn i nh dng) n dng m hnh b mt u c t ng ha mc
cao, hu ht cc ni dung lin quan n s l s liu kho st u c t ng thc hin nh: v
ng ng mc, phn tch dc b mt, xc nh ng t thy, xc nh lu vc, v mt ct
v dng m hnh ba chiu.
Da vo cng nng ca cc phn mm c th chia chng lm hai nhm:
Nhm cc phn mm a nng: l nhng phn mm c th dng cho nhiu mc ch khc
nhau, i din cho nhm ny l AutoCAD v Excel, ta c th s dng chng trong hu ht
cc giai on ca qu trnh to h s thit k. Tuy nhin, c th s dng a nng, cc
phn mm ny c thit k khng tp trung vo mt lnh vc c th no, khin cho mc
t ng ha cho tng cng vic khng c cao khi thc hin trc tip trn cc phn
mm ny. Ta c th dng AutoCAD to cc bn v k thut cho ngnh c kh cng nh
cng trnh, bi nguyn tc to bn v trong AutoCAD l lp ghp t nhng i tng
hnh hc c bn. Vi Excel, ta c th dng lp d ton hay to bng tnh duyt kt cu,
bi mi trong bng tnh ca n u c th nhn bt c ni dung no.



Hnh 3 AutoCAD v Excel
Nhm cc phn mm chuyn dng: l cc phn mm ch dng c cho mt mc ch c
th no . Bi ch nhm n ca chng l r rng cho nn mc t ng ha l rt cao.
V d trong phn tch kt cu, sau khi nhp xong s liu, phn mm phn tch kt cu s t
ng hon ton trong vic tnh v xut kt qu. Bi s a dng ca cc bi ton thit k,
cho nn cc phn mm loi ny cng rt a dng v chng loi v ngun gc, chng c th
c to ra t nhng cng ty sn xut phn mm chuyn nghip nh Hi Ha, AutoDesk,
MIDAS IT, ... hay t chnh nhng cng ty t vn thit k, v thm ch t chnh nhng k
s thit k. Cng bi tnh a dng ny m vic la chn tm c mt phn mm ph
hp i khi l mt bi ton kh i vi ngi s dng. Da trn mc ph bin trong s
dng, c th k ra mt s phn mm chuyn dng sau:
Trong lnh vc phn tch kt cu: MIDAS/Civil, RM, SAP, ANSYS, LUSAS,
ABAQUS.
Trong lnh vc a k thut: Geo-Slope, Plaxis, MIDAS GTS.
Trong lnh vc a hnh, bn : Land Desktop, Topo, MapInfo, CAD Overlay.
Trong lnh vc thit k hnh hc ng t: Nova-TDN, Civil 3D.
Do cng trnh giao thng lun ph thuc vo rt nhiu yu t xung quanh n, cho nn qu trnh
thit k lun gp phi nhng bi ton ring, c bit v khng th khi qut c. Nhng bi
ton ny hu nh khng c li gii tng qut, v cng bi iu ny khin cho khng c mt phn
mm chuyn dng no c th gii quyt c mi vn , nht l trong thit k ng t. Bn
cnh , do c s khc nhau trong cch trnh by v th hin bn v, nn thng thng cc phn
mm chuyn dng ch c th p ng vic to bn v mc c bn, cn vic b sung thm chi
tit hon thin bn v thng c lm th cng. Nhng nhc im ny ca cc phn mm
chuyn dng li l iu kin cho s ra i cc phn mm dng Add-in
1
, chng thng c pht
trin bi cc k s cu ng trong cng ty t vn thit k cng trnh giao thng v chy cng
vi cc phn mm chnh, chng tc ng trc tip ln kt qu do phn mm chnh to ra vi mc
ch l hon thin chng theo yu cu ring ca chnh cng ty .
3. La chn phn mm dng cho thit k cng trnh giao thng
Vi s a dng v chng loi v xut x ca cc phn mm chuyn dng, khin cho vic chn
mua phn mm gp nhiu kh khn, nht l i vi nhng n v t kinh nghim trong vic trin

1
Add-in: y l cc chng trnh dng ph tr hoc tin ch c thit k cng hot ng vi chng trnh
chnh. Mc ch dng m rng cc kh nng cho chng trnh chnh. Cc chng trnh dng Add-in ny c th
do chnh ngi dng to ra bng nhiu loi cng c khc nhau. Khng phi chng chnh chnh no cng chp nhn
Add-in, AutoCAD, MS.Office l hai phn mm cho php s dng Add-in in hnh.


khai cc h thng phn mm. Do , trang b c phn mm ph hp vi cng vic ca
mnh cn phi thc hin mt s cng vic chnh sau:
Chun b v nhn lc: khai thc hiu qu phn mm, nht l cc phn mm chuyn
dng, cn c nhn lc p ng c c hai yu cu:
C kin thc tin hc c bn: s dng tt h iu hnh Windows (hoc tng ng), in
n, tm kim ti liu trn Internet.
C kin thc chuyn mn ph hp.
Phn tch cng vic cn t ng ha xc nh r cc yu cu cn c tha mn khi
trin khai ng dng phn mm. V d, t ng ha cng tc thit k kt cu, nhng yu
cu sau cn c tha mn:
Tnh c ni lc v chuyn v ca kt cu di tc dng ca cc loi ti trng (cn nu
c th, v d nh cc trng hp t hp ti trng).
a ra c m t v phn b ng sut ti mt s v tr (cn nu c th, v d ti cc ni
c cu to hnh hc thay i t ngt).
C th tnh duyt c mt ct.
C th to bn v (cn nu c th mc chi tit ca bn v) v h tr in ra my in.
C th kt ni d liu vi cc phn mm khc (cn ch r nh dng kt ni, v d yu
cu nhp/xut cu to hnh hc ca kt cu t/sang nh dng *.DXF).
C th thm cc tnh nng mi cho phn mm bng cc cng c dng Add-in (yu cu
ny c th khng bt buc phi c).
Tm hiu, cng nhiu cng tt, cc phn mm chuyn dng m c th p ng c nhng
yu cu trn. C nhiu cch thu thp thng tin:
Kinh nghim ca cc n v, c nhn s dng.
Gii thiu t nh sn xut phn mm v tnh nng, gi c v ch h tr trong qu
trnh dng sn phm ca h.
nh gi phn mm ca cc tp ch chuyn ngnh.
Tm thng tin lin quan trn Internet.

Hnh 4 Tm kim thng tin trn Internet vi Google.com
S dng phin bn dng th min ph ca phn mm t kim chng.


m phn vi nh cung cp phn mm tm ra mt gii php hp l nht trc khi quyt
nh mua sn phm.
4. Chuyn bit ha phn mm
Khi c trang b phn mm vi mc ch t ng ha cng tc thit k th ta mi gii quyt
c cc bi ton c bn trong qu trnh thit k, bi khng c phn mm no, m ngay t
u, li c th p ng c mi vn s xut hin sau ny, cn rt nhiu vn mi s
lin tc pht sinh trong qu trnh thit k nhng cng trnh c th. Ni cch khc, vic trang
b phn mm no ch l bc u cho qu trnh t ng ha, nhng y l bc i quan
trng nht. C nhiu cch gii quyt cc vn pht sinh ny, m c bn v tt nht l hai
gii php:
Phn hi nhng vn pht sinh cho nh sn xut phn mm h nng cp phin bn,
sau cp nht li. Gii php ny thng mt nhiu thi gian v trong nhiu trng hp l
khng kh thi.
T b sung thm nhng kh nng mi cho phn mm ang s dng chng c th gii
quyt c vn pht sinh. Gii php ny i hi phi c nhn lc am hiu v chuyn
mn cu ng v cng ngh thng tin, ng thi phn mm ang s dng phi cho php
cp nht tnh nng mi t pha ngi dng. Nhn lc p ng c yu cu ny chnh l
k s xy dng cng trnh giao thng c trang b thm nhng kin thc v tin hc ph
hp, y l mc tiu chnh ca mn hc T ng ha thit k cu ng v cng l mc
tiu ca chnh gio trnh ny.
Phn mm, m ngi dng c th t to thm cc kh nng mi cho n, phi c mt s c
im sau:
Cung cp tnh nng cho php ngi dng c th t mnh b sung thm chc nng cho
chnh phn mm . V d phn mm AutoCAD cho php ngi dng s dng cng c
lp trnh, nh AutoLISP hay ObjectARX, t xy dng thm nhng chc nng mi
trong AutoCAD.

Hnh 5 B sung tnh nng mi cho AutoCAD
Cho php nhng cc phn mm dng Add-in vo bn trong, v d nh cc chng trnh
trong b MS.Office (Excel, Word, Power Point ...). Cc chng trnh dng Add-in c
th c xy dng t mt s cng c lp trnh (v d ta c th dng VSTO - Visual


Studio Tools for Office - xy dng cc chng trnh dng Add-in nhng vo trong
b Office)

Hnh 6- B sung thm chc nng lp d ton cho Excel
S liu u vo v kt qu c lu tr trn tp vi nh dng c th hiu c. Nhng
chng trnh dng ny ch cho php ngi dng to ra nhng tnh nng mi phc v
cho vic nhp d liu (cc chng trnh dng Wizard
1
) hoc trnh by kt qu.

1
Wizard: thng c hiu l mt chng trnh c chc nng tr gip ngi dng nhp d liu (nhanh v trnh sai
st), n c bit hu ch khi dng nhng phn mm a nng, bi nhng phn mm ny thng hay yu cu ngi
dng a vo rt nhiu loi d liu m nhiu khi chng khng thc s cn thit cho mt bi ton c th. Chng
trnh dng Wizard s t ng lc nhng thng tin cn thit cho bi ton c th ( ngi dng ch cn nhp nhng
d liu cn thit cho bi ton ca mnh) cn nhng s liu khc m phn mm yu cu s c chng trnh Wizard
t ng b sung. Bn cnh chng trnh Wizard cn c chc nng dn dt ngi dng thc hin bi ton theo
mt trnh t nht nh trnh nhm ln.



Hnh 7 Wizard tr gip nhp d liu cho kt cu cu c hng ca MIDAS/Civil
Cng c lp trnh to ra cc tnh nng mi cho phn mm hin c rt nhiu v kh d
dng. Hu ht chng tp trung h tr cho AutoCAD v Office, bi hai phn mm ny c
dng rt ph bin trong cng tc thit k. Vi AutoCAD ta c th s dng nhng cng c
sau:
Cc cng c lp trnh nhng sn bn trong AutoCAD:
AutoLISP: l mt ngn ng lp trnh dng thng dch, cho php ngi dng tn dng
ti a nhng lnh sn c ca AutoCAD t hp li nhm to ra nhng tnh nng
mi c mc t ng ha cao.



Hnh 8 Visual LISP: cng c h tr cho lp trnh vi AutoLISP trong AutoCAD
VBA: l mt cng c lp trnh da trn Visual Basic, n cho php ngi dng kt
hp tnh d dng v hiu qu ca mi trng lp trnh Visual Basic vi cc tnh nng
v h thng i tng sn c trong AutoCAD. Hin nay y l cng c c dng
rt ph bin xy dng thm nhng tnh nng mi, vi quy m khng ln v khng
qu phc tp trn AutoCAD. Trong lnh vc thit k cng trnh giao thng, cng vic
chim khi lng ln nht v mt nhiu cng nht l to bn v k thut. Mc d hu
ht ngi thit k u dng AutoCAD to bn v k thut nhng mc t ng
ha vn rt thp, ch yu s dng cc lnh n ca AutoCAD (thng qua dng lnh
hay nt bm trong AutoCAD) cng vi cc thng s hnh hc tnh ton c (c th
bng cc phn mm khc, v d phn mm tnh kt cu) xy dng bn v. Vn
ny hon ton c th t ng ha c khi ngi dng bit kt hp quy tc v i
tng thit k vi s liu hnh hc tnh c trong mt chng trnh VBA do chnh
h to ra.



Hnh 9 Mi trng lp trnh VBA trong AutoCAD
Cng c lp trnh bn ngoi: bao gm bt c ngn ng lp trnh no m c h tr cng
ngh COM (Component Object Model) ca Microsoft nh: VB, VC++, Delphi....
Cng c lp trnh ObjectARX (AutoCAD Runtime Extension): l mt cch m rng
AutoCAD hiu qu nht v phc tp nht. Cc phn m rng AutoCAD c xy dng
trn VC++ vi vic s dng cc th vin lp trnh m rng ca AutoCAD (chnh l
ObjectARX). Bi vic cho php iu khin trc tip nhn v cu trc d liu ca
chng trnh AutoCAD, cho nn nhng chng trnh c vit vi ObjectARX s c
tnh linh hot rt cao, tc chy nhanh v nh gn hn so vi chng trnh cng loi
vit bng cng c lp trnh khc, nhng mc phc tp ca vic lp trnh s tng ln.
Hu ht cc ng dng ln chy trn nn AutoCAD u c xy dng da trn
ObjectARX: Land Desktop, Civil 3D, Nova-TDN...



Hnh 10 M rng kh nng cho AutoCAD dng ObjectARX
5. Kt chng
Nh vy, trong chng ny, ton cnh v vic ng dng cng ngh thng tin t ng ha
cng tc thit k cng trnh giao thng c cp n. Vn ct li t ng ha
thit k bao gm:
Qu trnh thit k cng trnh giao thng v sn phm ca tng cng on.
Kh nng ca phn cng my tnh v cc h thng phn mm, bao gm c cc phn mm
chuyn dng.
S a dng ca cc bi ton thit k cng nh nhng hn ch trong cc phn mm chuyn
dng.
Nhng c im ca phn mm v cc cng c pht trin, t c c nh hng
trong vic gii quyt cc vn pht sinh, vn thng gp sut qu trnh thit k.
Trong khun kh gio trnh ca mt mn hc, nhiu mng kin thc s c k tha t nhng
mn hc khc l iu ng nhin, v do , ch c nhng ni dung mi, cha c cp n
trong nhng mn hc khc, mi c trnh by chi tit y. Vi cc chng tip theo trong
gio trnh ny, nhng kin thc chi tit thc hin t ng ha thit k cu ng s c a
ra theo nhng chnh ca chng u tin ny.




P PH H N N I II I: : L L p p t tr r n nh h t tr r n n n ng g d d n ng g n n n n

CHNG I: Khi nim
Trong h s thit k, phn ti liu c trnh by di dng bng biu (bng tnh kt cu, bng
tnh khi lng, ...) v bn v (m t cu to hnh hc ca cng trnh) chim mt khi lng
ng k. Ni dung ca nhng ti liu trong phn ny li lun c mi quan h r rng v cht ch
vi phn tnh ton trong qu trnh thit k, chnh v vy, kh nng thc hin t ng ha cng
on ny l hon ton kh thi v mang li hiu qu cao. Nhng cng vic c th c th t ng
ha bao gm: tnh ton, lp bng tnh, lp bn v, trong , phn tnh ton to tin cho qu
trnh thc hin lp bng tnh v bn v.
Phn tnh ton c th c tch ra thnh mt m-un ring v thc hin c lp vi bt c cng
c lp trnh no, v hin nay, cng ngh lp trnh cho php d dng kt ni cc m-un loi ny
vi cc ng dng khc. Phn lp bng tnh v bn v, thc cht s dng kt qu thc hin ca
m-un tnh ton v th hin kt qu ny di dng bn v k thut v bng tnh, bng biu ph
hp vi cc quy nh v trnh by ti liu trong h s thit k. Trong nhiu trng hp ngi ta
c th kt hp m-un tnh ton vo cng vi qu trnh to bng tnh hay bn v, cch lm ny
rt hiu qu i vi cc bi ton khng qu phc tp v tnh ton (nh thit k hnh hc ng
t hay tnh duyt mt ct kt cu). Nhng i vi cc bi ton c phc tp cao trong tnh ton
(nh bi ton tnh kt cu hay n nh trt mi dc) th m-un tnh ton thng c tch
ring ra v kt qu tnh ton s c trnh by bi m-un to bn v v m-un to bng tnh
ring. Trong khun kh gio trnh ny, do nhm n tnh ph bin ca cc bi ton thng thng
c phc tp khng cao nhng a dng, cho nn vic nh hng gii quyt bi ton hng
n vic hp nht phn tnh ton vo trong m-un to bng tnh hay m-un to bn v.
Do bng tnh v bn v c cu trc ti liu rt khc bit, cho nn hu nh khng c phn mm
no c th h tr tt cho c hai mc ch trn cng lc, m trong thc t, ngi ta s dng nhng
phn mm ring to bn v hay bng tnh. V d trong lnh vc thit k cng trnh giao thng,
Excel thng c dng nh l phn mm h tr to bng tnh chuyn nghip, trong khi ,
AutoCAD li thng c s dng trong vic to bn v k thut. Bn cnh AutoCAD v Excel,
cn c nhiu phn mm chuyn dng khc, m kh nng ca chng tp trung vo mt s lnh
vc hp, v d nh MIDAS/Civil tp trung vo lnh vc phn tch kt cu, Nova-TDN tp trung
vo lnh vc thit k hnh hc ng t. Kt qu m cc phn mm chuyn dng ny mang li
kh y , c th bao gm hu ht cc bng tnh v bn v lin quan n bi ton c gii
quyt. Tuy vy, trong phm vi lnh vc ca mnh, khng phn mm chuyn dng no c th p
ng c mi nhu cu, v do , chng thng c thit k theo hng c th kt ni vi cc
phn mm khc nhm mc ch h tr ngi dng gii quyt c vn pht sinh bng cch
kt hp vi phn mm vi nhau.



Hnh 1 Lp bng tnh kt cu mt ng trn Excel

Hnh 2 To bn v bnh tuyn ng t trn AutoCAD
c th kt ni vi nhau, cc phn mm chuyn dng thng cung cp kt qu tnh ton di
dng d liu c cu trc v c lu tr trong cc tp c nh dng TEXT, v d nh CSV hay
DXF. Vi cc d liu c cu trc ny, ngi dng s t thc hin vic kt ni cc phn mm li
vi nhau. Vic kt ni ny cng ch c th gii quyt thm mt s bi ton pht sinh, cho nn
mt s phn mm cho php ngi dng c th can thip su hn na vo bn trong n bng
cc cng c lp trnh, h c th t gii quyt cc bi ton pht sinh m ngi thit k phn
mm khng th d kin trc c. Khi ngi dng xy dng nhng chng trnh ca h da


trn nhng ng dng c thit k theo cu trc m ny, h s tn dng nhng kh nng sn c
ca chng lm nn, gip cho vic lp trnh c nhanh v hiu qu hn rt nhiu so vi cch
lp trnh thng thng, v do , c th gi chng l cc ng dng nn, in hnh v c s
dng nhiu nht lm ng dng nn trong lnh vc thit k l AutoCAD v Excel, ngoi vic ph
hp vi nh dng ti liu trong h s thit k (bn v v bng tnh) chng cn cho php ngi
dng xy dng cc chng trnh chy cng vi mc ch b sung thm cc chc nng chuyn
bit.
Nh vy, mt phn mm c gi l ng dng nn khi n tha mn ng thi cc tiu ch sau:
Cho php mt chng trnh chy bn trong v cng vi n (tng t nh mt lnh).
Cho php s dng cc tnh nng ca n thng qua cng c lp trnh thch hp.

Hnh 2 M hnh lp trnh trn ng dng nn
Mt lnh mi hay mt chc nng mi c xy dng trn ng dng nn thc cht l mt chng
trnh hon chnh, v vy, xy dng n cn c cng c lp trnh tng ng. Thng thng cng
c lp trnh c hiu nh l mt tp hp bao gm:
Ngn ng lp trnh.
Mi trng lp trnh.
Th vin h tr lp trnh.
Mt v d v cng c lp trnh trn AutoCAD, l AutoLISP. Vi cng c lp trnh ny, khng
nht thit phi c mi trng lp trnh v th vin h tr lp trnh, ta ch cn to ra mt tp dng
TEXT cha cc m lnh vit bng ngn ng AutoLISP. Tuy nhin t phin bn AutoCAD R14,
thun tin cho ngi lp trnh, mt mi trng lp trnh dnh cho AutoLISP c b sung,
l Visual LISP. Vi mi trng lp trnh ny, vic lp v kim sot chng trnh tr nn
thun li hn rt nhiu, bi Visual LISP c tch hp nhiu tnh nng h tr lp trnh chuyn
nghip, trong khi , nu ta khng s dng mi trng lp trnh, th tuy ta c th vit c mt
chng trnh AutoLISP hon chnh, song trong sut qu trnh xy dng chng trnh ny ta lun
phi vt v t kim sot chng trnh.



Hnh 3 Xy dng chng trnh bng ngn ng AutoLISP khi khng s dng mi trng lp
trnh, ta s lun phi t kim sot c php v cc lnh m khng c bt c h tr no v th kh
nng nhm ln l rt ln.

Hnh 4 Lp trnh bng ngn ng AutoLISP trn mi trng lp trnh Visual LISP, ta lun nhn
c s h tr t ng bng mu sc hay cc tnh nng khc trong mi trng lp trnh.
Th vin h tr lp trnh c th rt a dng v thng l nhng phn b sung gip cho vic xy
dng chng trnh c nhanh hn thng qua s k tha nhng th c lm t trc. Khi
lp trnh bng AutoLISP th th vin h tr lp trnh l tp hp cc chng trnh hon chnh
cng vit bng AutoLISP. s dng th vin h tr lp trnh th mi cng c lp trnh c mt
quy nh v cch thc s dng ring, v d vi AutoLISP, s dng mt chng trnh con
trong th vin, ta ch cn ti chng trnh AutoLISP cha chng trnh con thng qua mt
cu lnh t chng trnh chnh.


Tng ng vi tng ng dng nn th s c cc cng c lp trnh ph hp. Mt ng dng nn c
th h tr mt hay nhiu cng c lp trnh khc nhau, ty mc ch s dng. AutoCAD h tr
cc cng c lp trnh trn ng dng nn sau:
AutoLISP
ObjectARX
VBA (Visual Basic for Applications)
Cn Excel h tr cc cng c lp trnh:
VBA
VSTO (Visual Studio Tools for Office)
Mi cng c lp trnh lun c nhng c im ring v kh c th phn xt ci no hay hn hoc
km hn mt cch tng qut. Do , la chn c cng c lp trnh thch hp khi lp trnh
trn ng dng nn, cn da vo mc ch c th. V d khi lp trnh trn AutoCAD, to cc
cng c tr gip v th AutoLISP l la chn hp l. Nhng xy dng nhng ng dng ln,
phc tp, i hi phi can thip su vo bn trong AutoCAD th ch c th dng ObjectARX mi
lm c.
Trong lnh vc t ng ha thit k cng trnh giao thng, hu ht cc bi ton ln v c bn
c gii quyt, nhng cn rt nhiu cc bi ton khc, tuy khng ln v khng qu phc tp,
nhng li rt a dng v kh khi qut, vn cha c phn mm thc hin, v do , phm vi ng
dng ca lp trnh trn ng dng nn l rt ln v c tnh hiu qu cao. Hn na, vi quy m ca
cc bi ton ny, th vic la chn VBA lm cng c lp trnh l rt ph hp bi:
Ngn ng lp trnh Visual Basic (VB) l mt loi ngn ng d s dng, c s lng ngi
dng ng o v ti liu tham kho rt phong ph. iu ny cho php ngi dng trao i
k nng, tm kim ti liu, m ngun mt cch d dng.
Mi trng lp trnh thn thin, d dng v y nn vic xy dng ng dng s nhanh
v khng cn thm cng c lp trnh no khc.
Trn tt c cc ng dng nn h tr VBA, giao din lp trnh l ng nht, do ngi
dng c th lp trnh m rng trn nhiu ng dng nn mt cch thun li.
Th vin lp trnh c rt nhiu v a dng cho nn ngi dng c th xy dng ng dng
ca mnh nhanh v chuyn nghip.
Tc thc thi ca chng trnh nhanh.
Khai thc c hu ht cc tnh nng sn c ca ng dng nn.
Chng trnh VBA c th c nhng trong tp ca ng dng nn (chng hn nh tp
bng tnh ca Excel hay tp bn v ca AutoCAD) hoc c th c lu di dng mt d
n c lp. iu ny gip cho vic phn phi, chia s m lnh c thun tin.
Kt chng
T ng ha cng tc lp h s thit k cng trnh giao thng l hon ton kh thi v c th
c thc hin theo nhiu cch khc nhau.
D n VBA nn xy dng theo hng gp c phn tnh ton v xut kt qu vo mt m-un
thng nht.
S dng AutoCAD v Excel lm ng dng nn xy dng cc ng dng bng VBA nhm mc
ch h tr thit k l la chn mang tnh kh thi cao v c nhiu u im.
lp trnh vi VBA, cch tt nht, l lm ch tng phn. u tin cn nm vng ngn ng lp
trnh Visual Basic v cch s dng VBA IDE vit m lnh cng nh thit k giao din. Sau
nghin cu m hnh i tng ca ng dng nn (l nhng thnh phn ca ng dng nn m
ngi dng c th s dng) cng nh cch s dng chng bng VBA.




CHNG II: Tng quan v VBA

1. c im ca VBA
T cc c im c bn c phn tch cui chng 1 ta c th thy rng VBA l mt cng
c lp trnh cho php pht trin nhanh phn mm v c tch hp vo trong ng dng nn. V
thc cht, VBA c xy dng da trn kin trc COM
1
, cho nn ngi dng c th s dng cc
thnh phn sn c ca ng dng nn trong vic xy dng chng trnh ca mnh vi VBA.
Mt d n c xy dng bng VBA da trn ng dng nn no th n ph thuc cht ch vo
ng dng nn , bi theo mc nh, d n VBA s hot ng v s dng cc thnh phn trong
chnh ng dng nn . iu ny c ngha l ta rt kh c th chuyn i mt d n VBA t loi
ng dng nn ny sang mt ng dng nn khc cng nh to ra mt ng dng chy c lp.
S khc bit c bn nht ca VBA trong cc ng dng nn (v d gia VBA trong AutoCAD v
VBA trong Excel) l cch thc s dng cc thnh phn (i tng) ca ng dng nn. Cho nn
khi xy dng ng dng bng VBA, vic u tin l phi tm hiu m hnh i tng ca ng
dng nn v cch s dng chng.
Nh trong chng trc trnh by, xy dng mt d n VBA, mt cch tng qut, ngi dng
cn nm vng hai phn:
Ngn ng lp trnh Visual Basic v giao din lp trnh VBA IDE. Phn ny s bao gm cc
ni dung kin thc trong chng 2 v 3.
M hnh i tng ca ng dng nn v cch s dng chng. Ni dung kin thc ca phn
ny s c trnh by trong chng 4 v 5.
2. Trnh t xy dng mt d n bng VBA
V mt trnh t thc hin, vic xy dng mt d n VBA bao gm cc bc sau:
1. Xc nh r nhu cu xy dng chng trnh. Nhu cu ny c xc nh da trn hot ng
thc t ca ngi dng v thng do chnh ngi dng xut. y l bc xc nh cc
chc nng ca chng trnh.
2. Xc nh r mc tiu m chng trnh cn t c. Bc ny l phn c th ha ca bc
1, v d nh bc 1 c nhu cu hon thin bn v kt cu BTCT, cn bc ny s c th mc
hon thin (n u v nh th no).
3. La chn ng dng nn v cng c lp trnh ph hp cho vic xy dng chng trnh. V d
vi nhu yu cu tnh v to bn v ca cu kin BTCT, th ng dng nn thch hp l
AutoCAD v cng c lp trnh c th l AutoLISP, VBA, ObjectARX. Ty theo mc
phc tp ca bi ton m ta la chn cng c lp trnh ph hp. y VBA m bo s
thun tin trong vic xy dng cc m-un tnh ton v to bn v i vi nhng bi ton
thng thng.
4. Thit k h thng cho chng trnh (hay d n): bao gm vic lp s khi, xc nh cc
m-un ca chng trnh, thit k giao din nhp xut d liu v kt qu, xy dng h thng
c s d liu sao cho tha mn nhng xut bc 1 v 2.

1
COM (Component Object Model): l mt kin trc lp trnh c thit k bi Microsoft. Mc ch ca cng ngh
ny l to ra mt chun cng ngh trong lp trnh, m cho php xy dng chng trnh theo m hnh lp ghp
hay s dng li cc sn phm c hon thin t trc theo chun COM.


5. Vit m lnh (lp trnh): l vic s dng cng c lp trnh to ra chng trnh ph hp vi
h thng c thit k bc 4.
6. Kim th chng trnh: l cng on hon thin v chun b a chng trnh vo s dng.
Nhng cng vic chnh ca bc ny bao gm:
Kim tra xem cc chc nng ca chng trnh tha mn cc yu cu ra t trc cha
bng cch chy th tt c cc tnh nng ca chng trnh da trn mt kch bn c th.
Kim tra hiu nng ca chng trnh: xem thi gian thc hin v quy trnh s dng chng
trnh c hp l khng.
Kim tra kh nng chu li ca chng trnh, v d nh khi nhp s liu sai. Mt chng
trnh m bo kh nng chu li l n s khng b dng li t ngt do li thao tc ca
ngi dng hay d liu sai.
7. ng gi, a chng trnh vo s dng: bao gm vic xy dng ti liu hng dn ci t
v s dng chng trnh nhm mc ch gip ngi dng c th trin khai chng trnh vo
thc t.
8. Tip nhn cc gp , phn hi ca ngi dng b sung hay hon thin nhng khim
khuyt ca chng trnh m trong qu trnh thit k h thng hay kim th b qua hoc
cha pht hin c.
9. Nng cp chng trnh: sau mt thi gian s dng, da trn nhng phn hi ca ngi dng,
nu thy rng chng trnh cn b sung thm nhng tnh nng mi th ngi pht trin phn
mm s thc hin s b sung ny da trn nhng thnh phn c t trc.
3. Cu trc ca mt d n VBA
Khi ni n cc thnh phn to nn mt d n VBA th cu trc ca n c th nh sau:
M-un chun (Module): l ni cha cc m lnh khai bo, cc chng trnh con (hm v
th tc). Vic to ra cc m-un chun thng cn c theo cc khi chc nng m ngi
thit k h thng t ra.
M-un lp (Class Module): l ni cha nh ngha cho cc lp ca d n.
Userform: l giao din dng hp thoi gip cho vic giao tip gia ngi s dng v
chng trnh c thun tin. Thng thng ngi ta s dng Userform nhp s liu,
xut kt qu ca chng trnh. Trong mt s d n, nu vic nhp s liu v biu din kt
qu c thc hin trc tip trn ng dng nn, th c th khng cn s dng Userform.
Nhng thnh phn ny l b khung ngi dng xy dng chng trnh ca mnh ln trn ,
v d nh vit m lnh hay thit k giao din cho chng trnh. M-un lp v UserForm l hai
thnh phn c th xut hin hoc khng thy thuc vo tng d n v tt c nhng thnh phn s
dng trong d n u c hin th trn giao din ca VBA IDE (hnh 2-1).



Hnh 2-1: Cu trc ca d n th hin trn VBA IDE
Tuy nhin, khi xy dng chng trnh (vit m lnh) c th th khi nim cu trc ca mt
chng trnh l s b tr, sp xp cc cu lnh trong chng trnh . Nh vy khi nim cu
trc ny ph thuc vo tng loi ngn ng lp trnh. i vi ngn ng lp trnh Visual Basic
(VB), cu trc ca n ch tp trung vo chng trnh con (hm v th tc) ch khng c mt quy
nh v cu trc no i vi chng trnh chnh. Chi tit ca cu trc ca chng trnh con s
c cp n trong cc phn sau.
4. Mi trng pht trin tch hp VBA IDE
Trong mi cng c lp trnh trn ng dng nn, lun c mt mi trng lp trnh nhm h tr
ngi dng c th xy dng, th nghim v hon thin chng trnh ca mnh. Trong AutoCAD
v Excel, khi s dng VBA lp trnh, mi trng lp trnh c gi l Mi trng pht trin
tch hp (vit tt l VBA IDE). Trn tt c cc ng dng nn, VBA IDE c cu trc v hot ng
tng ng nhau vi giao din c bn nh hnh 2 v cch gi giao din VBA IDE t ng dng
nn nh sau:
Phm tt: t giao din chnh ca ng dng nn, nhn t hp phm Alt+F11.
Menu: Tools Macro Visual Basic Editor.



Hnh 2-2: Giao din chnh ca VBA IDE
1. Thanh trnh n (Menu bar): cha tt c cc la chn cn thit thao tc vi VBA IDE
2. Ca s d n (Project Explorer Window): lit k di dng cy phn cp cc d n hin
ang c m trong VBA IDE v cc thnh phn c trong tng d n nh cc ti liu thnh
phn, cc m-un cha chng trnh con, cc m-un lp, cc ca s do ngi dng to.
Vic thm cc thnh phn mi vo trong mt d n c thc hin trong menu Insert ca
VBA IDE. V d mun thm mt m-un chun vo trong d n, chn Insert Module
3. Ca s m lnh (Code Window): mi thnh phn c lit k trong ca s d n u c mt
ca s m lnh ring, cha m lnh cho thnh phn . Ngi dng c th hiu chnh m
lnh, to ra m lnh mi trong ca s m lnh.
4. Ca s tra cu i tng (Object Browser Window): hin th cc lp, phng thc, thuc
tnh, s kin v hng s c trong th vin i tng v trong d n m ngi dng va to.


Ta c th s dng ca s ny tm kim, tra cu tt c cc i tng m ta va to ra cng
nh cc i tng trong cc chng trnh khc.
5. Ca s i tng trc quan (Visual Object Window): khi ngi dng to cc i tng trc
quan th ca s ny s cho php ngi dng thao tc trn cc iu khin mt cch d dng v
thun tin.
6. Hp cng c cha iu khin (Tool Box): cha cc thanh cng c gip ngi dng c th
chn cc iu khin vo ca s ngi dng (UserForm).
7. Ca s thuc tnh (Properties Window): ca s ny lit k tt c cc thuc tnh ca i
tng, qua ngi dng c th tham kho v thay i cc thuc tnh khi cn nh mu ch,
tn i tng
5. V d u tin vi VBA
V d ny c trnh by vi mc ch gip ngi dng lm quen vi VBA IDE trong Excel.
Kt qu ca v d l hin th ni dung A1 trong Sheet1 ca bng tnh ln tiu ca mt hp
thoi ngi dng (UserForm).
Trnh t thc hin nh sau:
1. M ng dng Excel, nhn t hp phm ALT-F11 vo VBA IDE.
2. Trong VBA IDE, chn menu Insert UserForm thm mt hp thoi ngi dng vo
trong d n.
3. Chn tip menu Insert Module thm mt m-un chun vo trong d n.

4. Chn Module1 v son tho m lnh trong m-un nh sau:
Public Sub FirstPro()
UserForm1.Show


UserForm1.Caption = Sheets("Sheet1").Range("A1").Value
End Sub
Sau quay tr li Excel, v chy chng trnh theo trnh t:
1. G vo A1 ca Sheet1 ni dung Hello, World.
2. Chn menu Tools Macro Macros (hoc nhn t hp phm ALT- F8).
3. Trong hp thoi Macro, chn macro c tn FirstPro ri nhn nt Run. Kt qu chng trnh
s hin th nh hnh di y:
Hp thoi Macro
Kt qu trn Excel


CHNG III: C bn v ngn ng lp trnh Visual
Basic
Trong chng ny s trnh by nhng kin thc c bn trong ngn ng lp trnh Visual Basic
(VB) nh: c php, cc t kho, cc kiu d liu, cc khai bo, Tt c cc v d s c vit
v trnh by kt qu trong VBA IDE.
1. Nhng qui nh v c php
C php c hiu l mt mt tp hp bao gm cc quy tc, lut l v trt t v hnh thc vit
ca mt cu lnh hay mt cu trc lnh.
Trong ngn ng lp trnh Visual Basic (VB), cng nh cc ngn ng lp trnh khc, u c
nhng quy nh v c php cho vic vit m lnh v ngi lp trnh cn phi tun theo cc quy
tc ny trnh bin dch c th dch m lnh m khng pht sinh li. Sau y l cc quy nh c
bn v c php ca VB:
Cc cu lnh phi l cc dng ring bit. Nu c nhiu lnh trn cng mt dng th gia
cc lnh ngn cch nhau bng du hai chm (:). Nu dng lnh qu di, mun ngt lnh
thnh hai dng th s dng du cch v du gch di ( _ ).
Nu mun chn thm ghi ch, phi bt u dng ch thch bng du nhy n ().
Qui c khi t tn: phi bt u bng k t kiu ch ci thng thng; khng cha du
chm, du cch hay cc k t c bit khc; khng qu 255 k t; khng trng vi cc t
kho; cc bin c cng mt phm vi th khng c t tn trng nhau.
2. Cc tr gip v c php trong qu trnh vit m lnh
Cc quy tc v c php thng kh nh i vi nhng ngi mi hc lp trnh hay mi s dng
ngn ng lp trnh mi, cho nn, thun tin cho ngi lp trnh, VBA IDE cung cp tnh nng
t ng pht hin li c php trong qu trnh vit m lnh. Tuy nhin vic kim tra t ng ny
c th gy kh chu cho nhng lp trnh vin chuyn nghip, nhng ngi rt him khi mc li
c php khi lp trnh, cho nn chc nng ny ch hot ng khi c kch hot (hnh 3.1), cch
lm nh sau:
Chn menu Tools Options Editor Code Settings

Hnh 3-1: Bt / Tt tr gip pht hin li c php ca VBA IDE
ngha ca hai ty chn ny nh sau:
T ng kim tra li c php (Auto Systax Check): Ty chn ny cho php VBA IDE t
ng pht hin li c php ngay sau khi ngi dng kt thc dng lnh (xung dng mi),
mt hp thoi nh hnh 3-2 s thng bo v tr gy li cng nh nguyn nhn gy li. Nu
ngi dng b qua khng sa ngay th dng lnh c li s c nh du.



Hnh 3-2: VBA IDE t ng kim tra li c php v thng bo cho ngi dng
Kim tra cc bin (Require Variable Declaration): Trong VB, ngi dng c th s dng
mt bin m khng cn khai bo. Trong trng hp ny bin s c khi to v nhn mt
gi tr mc nh. Tuy nhin, nu lm dng iu ny, rt c th s lm cho chng trnh kh
qun l v d nhm ln, v th VBA IDE cung cp ty chn ny cho php ngi dng
thit lp tnh nng kim sot qu trnh khai bo bin. Khi ty chn ny c kch hot, tt
c cc bin u phi khai bo trc khi s dng v VBA IDE s t ng thm vo u ca
mi m-un dng lnh Option Explicit nh hnh 3-4.

Hnh 3-4: VBA IDE t ng thng bo li khi bin c s dng m cha khai bo
3. Tnh nng gi nh v t hon thin m lnh
M lnh, thng thng l mt tp hp bao gm cc t kha, cu lnh, tn bin hay ton t c
sp xp theo mt trt t nht nh. Tn ca cc thnh phn ny c th kh nh chnh xc hoc
qu di, cho nn VBA IDE a ra tnh nng ny bng cch hin th nhng thnh phn c th ph
hp vi v tr dng lnh ang son tho trong mt danh sch v s t ng in vo chng trnh
theo la chn ca ngi dng (bm phm Tab). kch hot tnh nng ny ta lm nh sau:
Trong VBAIDE chn menu Tools Options Editor (nh hnh 3-5)



Hnh 3-5: Bt / tt tr gip hon thin m lnh t ng trong VBA IDE
ngha ca cc ty chn ny nh sau:
T ng hin th danh sch cc thnh phn ca i tng (Auto List Member): Vi ty
chn ny, khi mt i tng ca ng dng nn hay ca chng trnh c gi ra s
dng th mt danh sch cc thnh phn ca n (bao gm cc phng thc v thuc tnh) s
c t ng hin th ngi dng chn, sau khi bm phm Tab, tn ca thnh phn ny
s c t ng in vo v tr thch hp trong dng lnh (hnh 3-6).

Hnh 3-6: Danh sch cc thnh phn c t ng hin th.
T ng hin th c php cho chng trnh con (Auto Quick Info): Vi ty chn ny, VBA
IDE s hin th nhng thng tin v tham s ca mt hm hay th tc ( c xy dng t
trc) khi ngi dng s dng n. Cc thng tin ny bao gm tn ca tham s cng vi
kiu ca n (hnh 3-7).

Hnh 3-7: T ng hin th thng tin ca cc tham s trong chng trnh con.
T ng hin th gi tr ca bin (Auto Data Tips): Vi ty chn ny, trong ch g li
(Break mode), gi tr ca bin (c gn trong qu trnh chy ca chng trnh) s c
hin th khi ngi dng t chut ti v tr bin.
Ngoi ra, nu nhng tnh nng tr gip trn cha c kch hot, trong qu trnh vit m lnh,
ngi dng c th kch hot tm thi chng bng cch nhn t hp phm Ctrl Space. Cn ch
rng, khi danh sch tr gip hin ra, ngi dng c th s dng chut hoc phm mi tn
la chn mc cn s dng trong danh sch ri bm phm Tab xc nhn.


4. T kho trong VB
T kho l tp hp cc t cu thnh mt ngn ng lp trnh. Mi ngn ng lp trnh u c mt
b t kho ring, di y l danh sch cc t kho trong ngn ng lp trnh VB:

As For Mid Print String
Binary Friend New Private Then
ByRef Get Next Property Time
ByVal Input Nothing Public To
Date Is Null Resume True
Else Len On Seek WithEvents
Empty Let Option Set
Error Lock Optional Static
False Me ParamArray Step
Cc t kha l nhng t c dng ring cho nhng chc nng khc nhau trong ngn ng lp
trnh, v d t kha Private hn ch phm vi s dng ca bin hay chng trnh con. Do
vic t tn (bin, chng trnh con) bt buc phi khc so vi cc t kha, nu khng s pht
sinh li c php.

Hnh 3-8: VBA IDE bo li do tn bin trng tn vi t kha
5. Cc kiu d liu c bn
Khi mt chng trnh vn hnh, n s tc ng v lm thay i gi tr ca mt vi thng s trong
chng trnh, v d trong chng trnh gii phng trnh bc 2, cc thnh phn trong phng
trnh: y=ax
2
+bx+c s cn thay i gi tr khi chng trnh hot ng. Nh vy gi tr ca cc
thng s ny c nhu cu thay i trong nhng ln hot ng khc nhau ca chng trnh cng
nh trong mt ln hot ng no , v d gi tr ca y s thay i khi ta thay i gi tr ca a
trong phng trnh trn. Chnh bi nhu cu thay i gi tr ny m ngi ta a khi nim bin
m t s ng ca nhng thng s ny. Vi mi bin, gi tr ca n lun c quy nh l
phi thuc mt kiu d liu no , v d gi tr ca y trong phng trnh trn phi l kiu s
thc. Do ngn ng lp trnh c thit k thc hin nhiu nhim v khc nhau cho nn trong


ngn ng lp trnh no cng lun c nhiu kiu d liu thch ng vi nhu cu a dng ca
vic lp trnh.
Kiu d liu l loi gi tr m mt bin c th nhn, ni cch khc, khi mt bin c khai bo
th ta buc phi gn cho n mt kiu d liu nht nh. V tng th c th chia cc kiu d liu
trong VB ra lm hai loi:
Cc kiu d liu c nh ngha sn trong VB: l nhng kiu d liu c bn v thng
gp nh kiu s thc (Double), s nguyn (Integer), Chui (String)...
Cc kiu d liu do ngi dng t nh ngha: l kiu d liu c t xy dng da trn
nhng thnh phn d liu c bn trong VB. Cch xy dng kiu d liu ny c cp
trong phn di.
5.1. Kiu logic (boolean)
Ch cha hai gi tr TRUE v FALSE (ng v sai). Khi chuyn t cc d liu dng s sang kiu
logic, 0 s c chuyn thnh FALSE cn gi tr khc s c chuyn thnh TRUE. Khi chuyn
t kiu logic sang kiu s, gi tr FALSE s c chuyn thnh 0 cn gi tr TRUE s c
chuyn thnh -1.
Khai bo bin A l kiu logic
Dim A As Boolean
Bin A lc ny ch c th nhn cp gi tr: True hay False.
5.2. Kiu s nguyn
Dng cha cc gi tr l s nguyn v c vi loi d liu kiu ny. S khc nhau ca nhng
loi d liu ny l gii hn gi tr (ln nht v nh nht) m bin c th nhn c (tham kho
bng di).
Kiu s nguyn Kch thc Phm vi
Byte 1 byte 0 n 255
Integer 2 bytes -32,768 n 32,767
Long 4 bytes -2,147,483,648 n 2,147,483,647
5.3. Kiu s thc
Dng cha cc gi tr l s thc. Cc kiu s thc thng dng c trnh by trong bng
di y:
Kiu s thc K.thc Phm vi
Single 4 byte T -3.402823E38 n -1.401298E-45
v t 1.401298E-45 n 3.402823E38
Double 8 bytes -1.79769313486231E308 n -4.94065645841247E-324
v t 4.94065645841247E-324 n 1.79769313486232E308
Currency 8 bytes T -922,337,203,685,477.5808 n 922,337,203,685,477.5807
5.4. Kiu mng (array)
Khi gp trng hp phi s l mt lot cc bin tng t nh nhau, v d cc phn t ca mt
ma trn, nu ta phi t tn khc nhau cho tt c cc bin ny th rt bt tin, thay vo ta c
th dng kiu mng t tn chung cho c nhm cc phn t v khi no cn s dng tng
phn t ta s gi tn theo ch s ca chng trong mng.
Khai bo mng


Dim Matrix_1(10) As Double
Mng Matrix_1 trn c 11 phn t lin tc c nh s t 0 n 10 (ma trn c 1 hng v 11
ct). Khi s dng ta ch vic gi phn t cn dng theo ch s tng ng.
Gn gi tr 100 cho phn t th 2
Matrix_1(1)=100
Gn gi tr 100 cho phn t cui cng
Matrix_1(10)=100
Ta cng c th c nh phm vi ch s ca mng bng cch khai bo nh sau:
Khai bo mng
Dim Matrix_2(1 To 10) As Double
Lc ny ch s ca mng Matrix_2 s bt u t 1 v mng ny c 10 phn t.
Gn gi tr 200 cho phn t th 2
Matrix_2(2)=200
Gn gi tr 200 cho phn t cui cng
Matrix_2(10)=200
V d sau khai bo v s dng (gn gi tr cho phn t) mt ma trn 3 hng 5 ct
Khai bo mng (3x5)
Dim Matrix_3(1 To 3, 1 To 5) As Double
Gn gi tr 100 cho phn t ti hng th 2 ct th 3
Matrix_3(2,3)=100
Trong VB, mng c th c mt chiu hoc nhiu chiu, kch thc ca mng c xc nh da
trn s chiu v bin trn, bin di ca mi chiu. Cc thnh phn trong mng l lin tc gia
hai bin.
Trong cc v d trn, cc mng c kch thc (hay s lng phn t) l khng thay i trong sut
qu trnh hot ng ca chng trnh. Ngi ta gi loi mng ny l mng tnh v thng c
dng cho nhng bi ton bit trc s phn t ca mng hay kch thc mng khng ln. Ngoi
loi mng tnh ny, trong VB cn cho php nh ngha mt loi mng khc m kch thc (hay
s lng phn t) ca n c th thit lp li ngay trong lc chng trnh ang hot ng, ngi
ta gi loi mng ny l mng ng. Vi mng ng, ngi lp trnh khng cn bit s phn t
ca mng trong lc lp trnh, s phn t ny s c thit lp trong qu trnh chng trnh hot
ng da theo nhu cu ca tng bi ton c th.
Khi mt mng ng, m cc phn t ca n c gn gi tr, cn thay i kch thc, s c
hai tnh hung cn xt n:
Ton b gi tr ban u (trc lc thay i kch thc mng) s b hy b, cc phn t
mng mi (sau khi thay i kch thc) s nhn gi tr mc nh.
Khai bo mng A l mng ng
Dim A() As Long
Xc nh kch thc cho mng ng A: mng 1 chiu c 5 phn t
Redim A(1 to 5) As Long
Gn gi tr cho phn t ca mng A
A(1) = 100: A(2) = 200
nh li kch thc cho mng A: mng hai chiu vi 3x3=9 phn t
Redim A(1 to 3, 2 to 4) as Long


Sau dng cui cng ny, ton b gi tr ca mng A c (c A[1]=100 v A[2]=200) s b
xa b v tt c cc phn t mi ca mng A (9 phn t) s nhn gi tr mc nh (thng
c gn bng 0).
Gi tr c ca cc phn t mng s c gi li khi c hai iu kin sau tha mn:
S dng lnh ReDim vi t kha Preserve.
S thay i kch thc mng ch c thc hin bin trn ca chiu cui cng ca
mng, ngha l cc phn t cn gi li gi tr c ch s khng i ngay c khi mng
c nh li kch thc.
Khai bo mng ng A
Dim A() As Long
Gn kch thc cho mng A
ReDim A(1 To 3, 1 To 3) As Long
Gn gi tr cho phn t ca mng A
A(1,1) = 100: A(1,2) = 200
A(2,1) = 150: A(2,2) = 250
nh li kch thc cho mng A, gi li gi tr ban u
ca cc phn t, lu n phm vi ca mng mi
ReDim Preserve A(1 To 3, 1 To 5) As Long

Hnh 3-9: Cc phn t c th gi li gi tr ban u v cc phm vi c th thay i kch thc
ca mng ng

Trong v d trn, cc phn t ca mng A c gi li gi tr sau khi kch thc ca mng c
thay i li. Lu , ta ch c th gi li gi tr ca mng ban u khi s m rng c thc hin
ra bin cui cng ca n nh trn hnh 3-9.
5.5. Kiu chui (String)
Chui l mt hng bao gm cc k t lin tc nhau, cc k t y rt a dng: c th l ch s,
ch ci, du cch (space), k hiu. S lng k t trong mt chui l rt ln (2
16
k t). Mc
nh trong VB, cc bin hay tham s kiu chui c chiu di thay i ty theo gi tr d liu
c gn cho n.
Dim S As String
S=ABCD 1234 @#$%
to iu kin thun li cho ngi dng, bn trong VB c sn mt s hm lin quan n x l
chui, v d nh ct chui, tch chui, ghp chui, tm kim, Cc hm c bn ny c trnh


by phn sau trong gio trnh ny hoc c th tra cu ton b cc hm lin quan trong MSDN
(Microsoft Developer Network) hoc Object Browser (th vin Strings) bng cch nhn phm F2
trong giao din lp trnh VBA IDE (hnh 3-10).

Hnh 3-10: Thng tin v cc hm trong th vin lp trnh ca VBA c hin th trong Object
Browser
5.6. Kiu thi gian (Date)
Dng lu tr v thao tc trn cc gi tr thi gian (ngy v gi). nh dng ngy v gi ph
thuc vo cc thit lp v hin th trong h thng ca ngi dng. Khi chuyn t cc d liu kiu
s sang kiu ngy thng, cc gi tr bn tri du phy chuyn thnh thng tin v ngy cn gi
tr bn phi du phy s c chuyn thnh thng tin v gi.
Dim D As Date
Dim S As String
D = Now()
S = "Ngay: " & Day(D) & " - Thang: " & Month(D) & " - Nam: " & Year(D)
Debug.Print (S)
V d trn s hin th thng tin v thi gian (ngy thng nm) trong ca s Immediate ca
VBA IDE.
5.7. Kiu Variant
Kiu Variant l mt kiu d liu c bit c th cha tt c cc loi d liu, ngoi tr kiu chui
c chiu di c nh. Kiu Variant cng c th cha cc gi tr c bit nh Empty, Error,
Nothing v Null.
Tuy kiu d liu Variant c v tin dng nhng khi s dng mt cch qu thoi mi th nguy c
gy li ca loi bin ny l rt ln, c bit khi thao tc vi cc ton t.
Dim V As Variant
Gn bin V vi mt chui
V = String
Gn bin V vi mt s
V = 16
Gn bin V vi gi tr kiu logic
V = True


Gn bin V vi mt d liu kiu thi gian
V = #01/06/2007#
S dng hm VarType(vVariant) s cho ta m ca kiu d liu hin ang lu tr trong bin
Variant.

Gi tr VarType Ch thch
0-vbEmpty
Khng c g trong variant
1-vbNull
Khng c d liu hp l trong variant
2-vbInteger
Variant cha Integer
4-vbSingle
Variant cha Single
7-vbDate
Variant cha Date/Time
8-vbString
Variant cha String
9-vbObject
Variant cha mt Object
11-vbBoolean
Variant cha Boolean

5.8. Kiu t nh ngha (user-defined type)
Kiu t nh ngha l kiu d liu do ngi dng nh ngha, tng t nh kiu bn ghi
(Record) trong ngn ng lp trnh Pascal hay kiu cu trc (Struct) trong ngn ng lp trnh
C. Kiu t nh ngha bao gm nhiu trng d liu, mi trng d liu c th l cc kiu d
liu c bn hoc cc kiu t nh ngha khc.
V d, khi o ton c bng my kinh v c, vi mi im o ta cn lu li cc thng tin sau:

K hiu ngha Kiu gi tr
TrM
S hiu trm t my Integer
STT
Th t ca im o Integer
DT
S c dy trn Double
DG
S c dy gia Double
DD
S c dy di Double
H
Gc bng Double
V
Gc ng Double
MT
M t c im ca im o String
Vi mt chng trnh x l s liu o ton c, cch tt nht l qun l theo im o, v do
mi im o l mt bin c kiu d liu ph hp vi bng trn. chnh l kiu d liu t nh
ngha.
nh ngha kiu d liu cho im o ton c
Type DiemDo
TrM As Integer
STT As Integer
DT As Double


DG As Double
DD As Double
H As Double
V As Double
MT As String
End Type
Sau khi nh ngha kiu d liu DiemDo xong, ta c th s dng n nh nhng kiu d liu
thng thng khc.
Khai bo bin s dng kiu d liu t nh ngha
Dim P1 As DiemDo
Dim P_Array(1 to 1000) As DiemDo
With P1
.TrM = 1
.STT = 1
.DT = 2130
.DG = 2120
.DD = 2110
.H = 130.5
.V = 78.25
.MT = Goc nha C4
End With
P_Array(1) = P1
T kha: With End With dng trnh phi nhp li nhiu ln tn bin kiu d liu t
nh ngha. Du chm ( . ) c s dng thao tc vi cc thnh phn bn trong ca bin c
kiu d liu t nh ngha. V d sau l tng ng vi v d trn, nhng khng s dng cp t
kha With End With, ch l du chm ( . ) lun c:
Khai bo bin s dng kiu d liu t nh ngha
Dim P1 As DiemDo
Dim P_Array(1 to 1000) As DiemDo
P1.TrM = 1
P1.STT = 1
P1.DT = 2130
P1.DG = 2120
P1.DD = 2110
P1.H = 130.5
P1.V = 78.25
P1.MT = Goc nha C4
P_Array(1) = P1
5.9. Kiu lp (Class)
Kiu lp (Class) l mt m rng ca kiu d liu t nh ngha, s khc bit c bn y l
trong kiu lp cn c nhng on chng trnh dng x l chnh nhng d liu trong n. D
liu bn trong lp thng c gi l cc thuc tnh (Properties), cn nhng on chng trnh
trong lp x l d liu ny thc cht l cc Hm / Th tc (Function / Sub) c nh ngha
bn trong lp v thng c gi l cc Phng thc (Methods). Mt bin c kiu d liu l lp
c gi l mt i tng (Object) v cch s dng cc Properties, Methods ca i tng ny
tng t nh cch s dng cc thnh phn ca kiu d liu t nh ngha.
Lp cn c xy dng trong Class Module hoc ta c th s dng li cc lp sn c t cc th
vin lp trnh.
Nh vy lp c th gm cc thnh phn sau:


Cc thuc tnh (Property): l cc d liu m t trng thi ca bn thn i tng hoc
cc quan h ca n vi cc i tng khc.V bn cht, thuc tnh l cc bin c khai
bo trong lp . Kiu d liu ca cc thuc tnh c th l cc kiu d liu c bn hoc c
th l mt lp khc (kiu Class).
Cc phng thc (Method): m t hnh vi, chc nng ca i tng. V bn cht,
phng thc l cc chng trnh con c xy dng bn trong lp v chng c nhim v
x l cc d liu ca chnh lp .
Cc s kin (Event): S kin gip cho lp c kh nng giao tip vi cc lp khc hoc
vi mi trng ngoi.
Trong khun kh ca gio trnh ny, cc vn lin quan n xy dng lp s khng c
cp chi tit. Tuy nhin nu ai quan tm c th tm hiu thm trong gio trnh Lp trnh hng
i tng trong xy dng ca b mn T ng ha thit k Cu ng.
6. Khai bo trong VB
Trong VB, mun s dng mt bin c th khng cn khai bo, tuy nhin cch lm ny ch nn
dng khi vit cc chng trnh nh, cn i vi cc chng trnh ln, c nhiu m-un, th nn
bt buc khai bo bin trc khi s dng (theo cch thit lp mc 2 ca chng ny).
Khai bo bin, v thc cht, chnh l vic to m lnh (lp trnh) cho nn cc on m lnh khai
bo bin c th t bt c thnh phn no trong d n VBA (m-un chun, m-un lp, v
Userform). Ty theo nhu cu s dng bin m ngi ta gii hn phm vi s dng ca bin sao
cho vic lp trnh c thun tin nht da trn nhng nguyn tc sau:
Khi bin khai bo trong chng trnh con no th phm vi s dng ca n c gii hn
trong chnh chng trnh con . Bin loi ny c gi l bin cc b.

Hnh 3-10: Phm vi s dng ca bin c khai bo trong chng trnh con
S dng t kha Public xc nh phm vi s dng bin l trong ton b d n, ngha l
t bt c ni u trong d n (m-un chun, m-un lp, v Userform) u c th s
dng bin ny. Bin c khai bo vi t kha Public thng c gi l bin ton
cc. Trong m-un no , nu mt bin c khai bo vi t kha Dim, th mc nh,
bin l bin cc b, ngha l tng ng vi vic s dng t kha Private.
Ch : khng s dng cc t kho Public,Private hay Friend cho khai bo d
liu nm bn trong chng trnh con.



Hnh 3-12: Phm vi s dng bin ton cc
mc rng hn, c th coi bin nh mt khi d liu ca chng trnh v mc ton
cc c chia lm hai loi nh sau:
Ton cc mc ng dng: Trong trng hp ng dng gm nhiu d n (multi-
projects), nu trong mt m-un khng c khai bo la chn Option Private
Module th tt c cc thnh phn d liu hay chng trnh c khai bo Public trong
m-un c phm vi hot ng ton b ng dng ngha l chng cn c th c
tham chiu t nhng d n khc trong ng dng.
Ton cc mc d n: Trong trng hp ng dng gm nhiu d n (multi-projects),
nu trong mt m-un c khai bo la chn Option Private Module th tt c
cc thnh phn d liu hay chng trnh c khai bo Public trong m-un ch c
phm vi hot ng trong ni b d n cha m-un m khng th c tham chiu t
nhng d n khc trong ng dng.

Hnh 3-13: Khai bo ty chn phm vi bin mc d n.
S dng t kha Private xc nh phm vi hot ng ca bin l trong ni b ca
m-un , tt c cc chng trnh con hay bt c thnh phn no ca m-un ny u c
th s dng bin loi ny nhng chng khng th truy cp c t nhng m-un hay
Userform khc trong d n.



Hnh 3-14: Phm vi s dng ca bin tng ng vi t kha Public v Private.
Khi khai bo kiu d liu ngi dng t nh ngha hoc cc chng trnh con trong mt
m-un, nu khng ch r phm vi hot ng th pham vi hot ng mc nh l Public.
trnh cc nhm ln do khng nh phm vi hot ng mc nh, ngi dng nn ch r
phm vi hot ng ca chng trnh hay d liu ngay khi khai bo.
Ngoi ra, trong cc m-un lp (Class Module) hoc m-un lnh ca UserForm cn c
th s dng t kha Friend xc nh phm vi hot ng ca mt chng trnh con
(phng thc). Khi s dng t kha ny, chng trnh con c th c truy xut t mi
ni trong ni b d n (Project) cha n nhng khng th c truy xut trong nhng d
n khc ca ng dng (khc vi khi dng t kha Public chng trnh con c th c
truy xut t mi ni ca ng dng).
Cc khai bo d liu vi cc t kho trn c thc hin trong phn General ca mt m-
un. Cc d liu cn c gi l d liu cp m-un (module level).
Trong mi m-un, phn u tin (ca phn vit m lnh) c gi l phn General ca
m-un . Theo quy c, cc thit lp cho m-un c t y v VBA IDE s t ng
phn cch phn ny (hnh 3-15). Khng c gii hn v kch thc cho phn ny.

Hnh 3-15: Phn General trong m-un
6.1. Khai bo hng s
Hng s l mt loi bin c bit m gi tr ca n c xc nh ngay lc khai bo v lun
khng thay i. Ta nn dng cch ny cho nhng hng s hay phi dng lp li trong chng
trnh, v d nh hng s = 3.14159. Sau khi khai bo hng s ny:
Const Pi=3.14159


ta lun c th s dng gi tr 3.14159 bt c ch no trong chng trnh vi ci tn d nh hn l
Pi.
C php:
[Public/ Private] Const <tn_hng>=<gi_tr_hng_s>
Cc t kho Public hay Private xc nh phm vi hiu lc ca hng s, vi t kho
Public, hng s ny c th s dng bt c u trong ng dng, cn vi t kho Private
th hng s ny ch c th s dng bn trong m-un ni khai bo hng s . ngha ca hai t
kha ny cng khng thay i cho tt c cc phn khc m c s dng chng.
6.2. Khai bo bin
C php:
Dim <tn_bin> as <Kiu_d_liu>
Khi dng t kha Public hay Private nhm xc nh phm vi hiu lc ca bin thay cho t
kha Dim trong khai bo bin th c php nh sau:
Public <tn_bin> as <Kiu_d_liu>
Hay:
Private <tn_bin> as <Kiu_d_liu>
6.3. Khai bo kiu t nh ngha
Trong VB c th khai bo cc kiu d liu theo nhu cu ca ngi s dng. C php khai bo
nh sau:
Type <Tn_ kiu>
<tn_trng_1> as <Kiu_d_liu>
<tn_trng_2> as <Kiu_d_liu>

<tn_trng_n> as <Kiu_d_liu>
End Type
Sau khi khai bo kiu t nh ngha, ngi dng c th s dng cc bin c kiu t nh ngha
bng cch khai bo nh cc bin thng thng, vi <Kiu_d_liu> c thay bng
<Tn_kiu>. truy cp ti mt trng ca bin kiu bn ghi, dng ton t (.) hoc dng cp
t kha With End With.
Cc t kho Public hay Private nhm xc nh phm vi hot ng ca kiu d liu
c khai bo. ng thi khai bo kiu ch c thc hin cp m-un (khng thc hin
c trong cc chng trnh con). Khi khng ch r th phm vi hot ng th mc nh ca
mt kiu d liu t nh ngha l Public.



6.4. Khai bo mng tnh
C php:
[Public/Private/Dim] <tn_mng> (<thng_s_v_chiu>) as <tn_kiu>
Cc thng s v chiu c th biu din qua cc v d sau:
Dim a(3 To 5) As Integer Mng 1 chiu vi cc ch s t 3 n 5

Dim A(3) As Long Mng 1 chiu vi ch s n 3 (mng 1 chiu c 4
phn t vi ch s t 0 n 3)

Dim A(2 To 4, 6) As Double Mng 2 chiu vi mt min ch s t 2 ti
4 v mt min c ch s t 0 n 6.
Cc t kho Public hay Private xc nh phm vi hot ng ca bin mng (trong trng
hp mng c khai bo mc m-un). Cc qui nh v phm vi hot ng ca mng tng
t vi bin thng thng - c trnh by phn trc.
6.5. Khai bo mng ng
C php:
[Public/ Private/ Dim] <tn_mng> () as <tn_kiu>
Trong khai bo trn khng cha cc thng s v chiu v thun ty ch l mt khai bo. Cc
phn t ca mng cha c to ra (hay ni cch khc mng vn cha thc s c cp pht b
nh) v vn cha sn sng s dng. Trc khi s dng mng ng hoc khi mun thay i
kch thc ca mng, s dng lnh Redim. C php nh sau:
Redim <tn_mng> (<cc thng s v chiu>) as <tn kiu>
Ch rng <tn_kiu> phi ng nh khai bo ban u, cc thng s v chiu c th khc
trc c v s chiu v kch thc ca tng chiu. Khi , cc d liu c trong mng khng cn
na, thay vo l nhng phn t mi c khi to.
6.6. Khai bo, to v lm vic vi bin i tng
Khai bo v to bin i tng phi dng thm t kha New
Dim <tn_bin> as New <Kiu_d_liu>
<Kiu_d_liu> l lp (class) c nh ngha t trc.
Php gn i tng c thc hin vi t kha Set


Set <bin_i_tng> = <gi_tr>
Ch rng nu thc hin khai bo mt bin i tng nh thng thng (khng c t kha New)
th bin thc s cha c to ra. Trong trng hp , ngi s dng phi to v gn i tng
vi cc t kho tng ng l New v Set.
Dim <tn_bin> as <Kiu_d_liu>
Set <tn_bin> = New <Kiu_d_liu>
Ch : cu lnh Set khng phi l cu lnh khai bo, v vy n phi c vit trong mt
chng trnh con no ch khng th nm trong phn General ca mt m-un.
Lm vic vi mt bin i tng tc l qu trnh thao tc vi i tng thng qua cc thuc tnh,
phng thc v cc s kin ca i tng . truy cp ti cc thuc tnh v phng thc ca
i tng ta s dng theo c php sau, ch n du chm ( . ) gia tn bin v tn thuc tnh
hay tn phng thc:
<Tn_bin>.<Tn_thuc_tnh>
<Tn_bin>.<Tn_phng_thc> <(tham_s_ca_phng_thc)>
7. Cc ton t v hm thng dng
7.1. Cc ton t
Ton t c s dng cho mc ch x l d liu. Ta s dng cc ton t thc hin tnh ton,
so snh, gn v thc hin nhiu thao tc khc. Di y l danh sch v ngha ca mt s ton
t thng dng:

Ton t M t
Ton t gn
= Gn gi tr cho bin hoc thuc tnh
Ton t ton hc
+ Cng
- Tr
* Nhn
/ Chia
\ Chia ly phn nguyn
Mod Chia ly phn d
^ Lu tha
Ton t logic
Not Tr v gi tr ph nh vi gi tr biu thc. Not(TRUE)=FALSE
And Ni logic hai biu thc. And(TRUE,TRUE)=FALSE; cc trng hp khc cho
kt qu bng FALSE
Or Or(FALSE,FALSE)=FALSE; cc trng hp khc cho kt qu l TRUE


Xor Cho kt qu TRUE nu hai i s c cng gi tr; ngc li cho kt qu l
FALSE
Eqv So snh hai gi tr logic; cch thc x l tng t nh ton t Xor
Ton t so snh
= So snh bng
<> Khc nhau
> Ln hn
>= Ln hn hoc bng
< Nh hn
<= Nh hn hoc bng
7.2. Cc hm ton hc
Cc hm ton hc c cha trong th vin Math (c th tra cu th vin ny bng Object
Browser) v c nhim v thc hin cc php ton thng thng hay gp. Sau y l mt s hm
thng dng:
Hm M t
Abs(x) Ly gi tr tuyt i
Exp(x) Ly m c s t nhin
Log(x) Logarit c s t nhin
Sqr(x) Ly bnh phng
Cos(x), Sin(x), Tan(x) Hm lng gic
Atn(x) Hm lng gic ngc
Fix(x) Ly phn nguyn (trc du phy). Fix(3.7)=3
Int(x) Ly phn nguyn c lm trn. Int(3.7)=4
Round(x,num) Lm trn s thc <x> n <num> ch s sau du phy
Val(str) Chuyn i chui <str> thnh gi tr kiu s
7.3. Cc hm chuyn i d liu
Chuyn i nh dng s liu l mt nhu cu thng gp trong lp trnh do cc ngn ng lp
trnh lun i hi kiu d liu phi r rng v c nh cho tng bin nhm trnh pht sinh cc li
sau ny. Vic chuyn i ny, nu trong trng hp thng thng , th VB s t ng thc hin.
Nhng khi gp cc yu cu c bit th buc ngi dng phi s dng nhng hm chuyn i
ph hp.
Vic chuyn i kiu d liu lun c th to ra li do khng th chuyn i c hoc pht
sinh kt qu sai. Cho nn khi s dng cn ch n cc kh nng gy li ca vic chuyn
i kiu d liu.
Cc hm ny c cha trong th vin Conversion (c th tra cu th vin ny bng Object
Browser). Sau y l mt s hm thng dng:
Hm M t
CBool(Expression) Chuyn i d liu sang kiu logic (Boolean)
CByte(Expression) Chuyn i d liu sang kiu Byte
CInt(Expression) Chuyn i d liu sang kiu nguyn (Integer)


CLng(Expression) Chuyn i d liu sang kiu nguyn (Long)
CDbl(Expression) Chuyn i d liu sang kiu thc (Double)
CSng(Expression) Chuyn i d liu sang kiu thc (Single)
CStr(Expression) Chuyn i d liu sang kiu xu (String)
Str(Number) Chuyn i d liu s sang kiu xu (String)
Val(String As String) Chuyn i d liu t String sang Double
V d:
Public Sub Test ()
Dim StrA as String
Dim A as Double
StrA=1234
A=Val(StrA) Kt qu A=1234
Debug.print A
A=4567
StrA=Val(A) Kt qu StrA=4567
Debug.Print StrA
End Sub
c th chy th cc on m lnh trn, trong VBA IDE, trc ht cn to ra mt m-
un trong d n (nu cha c) sau to ra mt chng trnh con dng Sub v nhp on
m lnh cn th vo chng trnh con ny. t con tr son tho m lnh bt c dng
no trong chng trnh con v bm phm F5 chy chng trnh.
Kt qu nh sau:

Ca s Immediate l mt b phn trong VBA IDE, bt / tt ca s ny c thc hin trong
menu View ca VBA IDE. Khi s dng lnh Debug.Print <tn_bin> th gi tr ca bin s
c th hin trong ca s Immediate khi chng trnh hot ng v c lu li ngay c
khi chng trnh kt thc. Ca s ny thng c dng vi mc ch g li khi lp trnh.
Khi ni dung trong ca s ny nhiu qu th ta c th xa bt bng cch chn vng cn xa
v bm phm Delete.
7.4. Cc hm x l chui
Cc hm loi ny c cha trong th vin Strings (c th tra cu th vin ny bng Object
Browser). Sau y l mt s hm thng dng:
Hm M t
Asc(x) Tr v m ASCII ca k t u trong mt chui
Chr(x) Chuyn i t m ASCII sang mt k t
Left(String, Length as Long) Trch d liu bn tri ca mt chui
Mid(String, Start As Long, [Length]) Trch d liu phn gia ca mt chui
Right(String, Length As Long) Trch d liu phn bn phi ca mt chui


Split(String) Tch mt chui di thnh mt mng gm nhiu chui
nh hn
Joint(StringArray) Gp mt mng cc chui thnh mt chui duy nht
V d:
Public Sub Test()
Dim StrArDes() As String
' Mng cc chui c khai bo dng mng ng
Dim StrScr As String 'Chui ban u
StrScr = "Point1_23.5_4.5_44.8"
StrArDes = Split(StrScr, "_")
' Tch chui StrScr thnh mt mng cc chui v a vo StrArDes,
' k t ngn cch l "_"
' Khi StrArDes(0)="Point1, StrArDes(1)="23.5"
' StrArDes(2)="4.5", StrArDes(3)="44.8"
Debug.Print StrArDes(0), StrArDes(1), StrArDes(2), StrArDes(3)
End Sub
Kt qu s nh sau:

Lu l du _ trong v d trn c th thay th bng bt c k t no.
Trong tt c cc ngn ng lp trnh, khi nim chui s v s l khc nhau. V d khi gn
A=123 th gi tr ca A l mt chui k t gm 1, 2 v 3. Cn khi gn B=123 th gi
tr ca B l mt trm hai mi ba.
8. Cc cu trc iu khin
8.1. Cu trc iu kin
Cc t kha: If, Then, Else, ElseIf, End If
C php:
If <biu_thc_iu_kin> then
Khi_lnh
End If
Din gii tin trnh ca cu trc iu kin nh sau: nu <biu_thc_iu_kin> l ng th
chng trnh s thc hin <khi_lnh>, nu sai th chng trnh s thot khi cu trc lnh ny.
S khi ca cu trc lnh kiu ny c th c biu din nh sau:



Dim A As Double
Dim B As Double
A = 20: B = 10
If A > B Then Debug.Print ("Hieu cua hai so A va B >0")
Kt qu nh sau:

Nu nh [khi_lnh] c th vit trn mt dng nh v d trn th khng dng t
kha End If. phn tch nhiu lnh trn cng mt dng, s dng du hai chm (:)
ngn cch gia cc lnh.
Ngoi cu trc c bn v trng hp ring trn, trong nhiu trng hp, ta buc phi x l khi
<Biu_thc_iu_kin> tr v gi tr False (sai). gii quyt tnh hung ny ta s dng cu
trc iu kin m rng nh sau:
If <biu_thc_iu_kin>
Khi_lnh_1
Else
Khi_lnh_2
End If
Din gii tin trnh ca cu trc lnh ny nh sau: nu <biu_thc_iu_kin> l ng th
chng trnh s thc hin <khi_lnh_1>, cn nu khng ng th chng trnh s thc hin
<khi_lnh_2>.
S khi ca cu trc lnh kiu ny c th c biu din nh sau:
False
iu kin
Khi lnh
True



Cc cu trc lnh iu kin c th c lng nhau th hin nhng thao tc phc tp hn bng
cch s dng thm t kho ElseIf. Nh vy, cu trc iu kin c c php tng qut nh sau:
If <iu_kin_1> Then
[Khi_lnh_1]
[ElseIf <iu_kin_n> Then
[khi_lnh_n]
...
[Else
[Khi_lnh_2]]
End If
Trong khi cu trc ny, khi lnh [ElseIf <iu_kin_n> Then c th lp li nhiu
ln tng ng vi nhiu iu kin khc nhau.
Din gii cu trc ny nh sau: nu <iu_kin_1> l ng th thc hin [Khi_lnh_1] v thot
khi khi cu trc ny, cn nu sai th s kim tra ln lt tng iu kin ca ElseIf xem c gi
tr no ng khng, nu khng c gi tr no ng th thc hin [Khi_lnh_2] (sau t kha Else)
v thot khi cu trc ny, cn nu gp mt gi tr ng u tin ca <iu_kin_n> no th
khi lnh tng ng vi ElseIf ny s c thc hin v thot khi cu trc ny.
If (TheColorYouLike = vbRed) Then
MsgBox "You 're a lucky person"
ElseIf (TheColorYouLike = vbGreen) Then
MsgBox "You 're a hopeful person"
ElseIf (TheColorYouLike = vbBlue) Then
MsgBox "You 're a brave person"
ElseIf (TheColorYouLike = vbMagenta) Then
MsgBox "You 're a sad person"
Else
MsgBox "You 're an average person"
End If
Ta xt v d trn:
Nu TheColorYouLike = vbRed th s ch c thng bo: You 're a lucky person.
Nu TheColorYouLike = vbBlue th s ch c thng bo: You 're a brave person.
False
iu kin
Khi_lnh_1
True
Khi_lnh_2


Nu TheColorYouLike khng thuc bt c gi tr no trong bng mu: vbRed,
vbGreen, vbBlue, vbMagenta th s ch c thng bo: You 're an average person.
8.2. Cu trc la chn
Cu trc ny s dng khi ta mun thc hin mt s lnh no y tng ng vi tng gi tr ca
biu thc kim tra.
Cc t kho s dng trong cu trc ny: Select Case, Case, Case Else, End Select.
C php ca cu trc la chn:
Select Case <biu_thc_kim_tra>
[Case iu_kin_1
[khi_lnh_1]]
...
[Case iu_kin_n
[khi_lnh_n]]
[Case Else
[khi_lnh_else]]
End Select
Din gii tin trnh ca cu trc la chn nh sau: Gi tr ca <biu_thc_kim_tra> s c
so snh vi cc <iu_kin_i> nu gi tr ca <biu_thc_kim_tra> tho mn
<iu_kin_i> th <khi_lnh_i> tng ng s c thc hin, sau chng trnh s thot
khi cu trc la chn. Trong trng hp gi tr ca <biu_thc_kim_tra> khng tho mn
tt c cc iu kin th <khi_lnh_else> s c thc hin nu c t kho Case Else, cn
nu khng c t kho Case Else th chng trnh s thot khi khi lnh la chn ny m
khng thc hin g c.
V d s dng ElseIf trn c vit li vi cu trc la chn nh sau:
Select Case TheColorYouLike
Case vbRed
MsgBox "You 're a lucky person"
Case vbGreen
MsgBox "You 're a hopeful person"
Case vbBlue
MsgBox "You 're a brave person"
Case vbMagenta
MsgBox "You 're a sad person"
Else
MsgBox "You 're an average person"
End Select
Ta c th thy rng vi cch vit s dng cu trc la chn, on chng trnh trn d c hn
nhiu so vi dng cu trc iu kin v ElseIf.
S khi ca cu trc la chn c th c biu din nh sau:



8.3. Vng lp xc nh
8.3.1. Vng lp theo bin m
Thc hin lp mt khi lnh theo mt bin m vi s ln lp xc nh, v d nh khi ta cn tnh
tng ca cc s nm gia hai s no .
Cc t kha: For, to, Step, Next
C php:
For <bin_m>=<Bt_u> To <Kt_Thc> [Step <bc_nhy>]
[Khi_lnh]
Next [<bin_m>]
Cu trc lp ny thc hin theo trnh t sau:
Gn <Bin_m> bng gi tr <Bt_u>
So snh <Bin_m> vi gi tr <Kt_thc>:
Nu nh hn hoc bng: thc hin cc lnh bn trong [Khi_lnh] v t ng cng
vo <Bin_m> mt gi tr bng <bc_nhy> nu c t kha Step, cn khng
th cng thm 1 v quay li bc so snh <Bin_m> vi gi tr <Kt_thc>.
Nu ln hn: kt thc khi lnh lp.
V d sau tnh tng ca cc s t 1 n 10:
Dim i As Integer
Dim Tong As Integer
Tong = 0
For i = 1 To 10 Step 1
Trng hp 1 khi_lnh_1
khi_lnh_n
khi_lnh_else
TRUE
... ...
Trng hp n
FALSE
FALSE
TRUE


Tong = Tong + i
Next
Debug.Print ("Tong = " & Tong)
Kt qu nh sau:

V d sau tnh tng ca cc s chn t 0 n 10:
Dim i As Integer
Dim Tong As Integer
Tong = 0
For i = 0 To 10 Step 2
Tong = Tong + i
Next
Debug.Print ("Tong = " & Tong)
Kt qu nh sau:

Ch : Khi gi tr ca <bc_nhy> l m (<0) th cu trc lp s thc hin trnh t
m ngc, ngha l vai tr ca gi tr <bt_u> v <kt_thc> i ch cho nhau.
V d tnh tng ca cc s chn t 0 n 10 s dng vng lp m ngc:
Dim i As Integer
Dim Tong As Integer
Tong = 0
For i = 10 To 0 Step -2
Tong = Tong + i
Next
Debug.Print ("Tong = " & Tong)
Kt qu nh sau:

Nu nh mun thot khi vng lp xc nh FOR khi m s ln lp cha th ta s dng
t kha Exit For.


V d sau s tnh tng ca cc s chn t 0 n 10, nhng s dng vng lp FOR ngay khi tng
ln hn 20:
Dim i As Integer
Dim Tong As Integer
Tong = 0
For i = 10 To 0 Step -2
Tong = Tong + i
If Tong > 20 Then Exit For
Next
Debug.Print ("Tong = " & Tong)
Kt qu nh sau: (10 + 8 + 6 = 24)


8.3.2. Lp trong mt tp hp
Trong trng hp mun thc hin cc khi lnh lp theo mt bin m chy trong mt tp hp
m tp hp khng th xc nh c s lng hoc bc nhy th ngi dng c th dng
vng lp trong tp hp (For Each Next). Tp hp y c th l mt tp i tng dng
Collection hoc mt mng.
Cc t kho s dng For, Each, In, Next
C php:
For Each <bin_chy> In <tp_hp>
[Khi_lnh]
Next
Gii thch: <bin_chy> s nhn cc gi tr t phn t u tin n phn t cui cng trong
<tp_hp>. ng vi mi gi tr ca <bin_chy>, khi lnh c thc hin mt ln.
Ch : Kiu ca <bin_chy> trong vng lp (For Each Next) s ph thuc vo kiu
ca <tp_hp> m n duyt qua l kiu mng hay kiu tp i tng. i vi
<tp_hp> l tp i tng th kiu d liu ca <bin_chy> c th l Variant,
hoc i tng cng kiu vi tp i tng . i vi <tp_hp> l mng th kiu d
liu ca <bin_chy> ch c th l Variant.
V d sau s thc hin tnh tch cc s trong mt mng 2 chiu vi vic dng vng lp trong tp
hp. Kt qu s c hin th trong ca s Immediate.
Public Sub TestForEach()
Dim a(0 To 2, 0 To 1) As Double
Dim v As Variant
Dim Tich As Double
a(0, 0) = 1: a(1, 0) = 2: a(2, 0) = 3
a(0, 1) = 4: a(1, 1) = 5: a(2, 1) = 6
Tich = 1
Debug.Print "Cac phan tu trong mang"


For Each v In a
Debug.Print v
Tich = Tich * v
Next
Debug.Print "Tich=" & Str(Tich)
End Sub
Kt qu nh sau:


8.4. Vng lp khng xc nh
Thc hin mt khi lnh vi s ln lp khng nh trc v ch kt thc qu trnh lp ny khi
mt biu thc iu kin c tha mn (biu thc iu kin c gi tr Boolean: True hoc
False). Ty thuc vo vic kim tra biu thc iu kin m ta s dng mt trong hai dng c
php nh sau:
Kiu1:LptrongkhibiuthciukinlTRUE
Do While <iu_kin>
[Khi_lnh]
Loop
Vi c php ny, [Khi_lnh] ch c thc hin khi <iu_kin> l ng.
V d sau s m s ch s chn trong khong hai s A, B:
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)
Kt qu nh sau:



Nu mun vng lp lun c t nht mt ln thi hnh khi lnh, s dng c php:
Do
[Khi_lnh]
Loop While <iu kin>
Vi c php ny, [Khi_lnh] c thc hin t nht mt ln cho d <iu_kin> ng hay
sai bi <iu_kin> c kim tra cui ca cu trc.
Kiu2:LpchonkhiiukinlFALSE
Do Until <iu_kin>
[Khi_lnh]
Loop
Nu mun vng lp lun c t nht mt ln thi hnh khi lnh s dng c php:
Do
[Khi_lnh]
Loop Until <iu_kin>
Khi [Khi_lnh] c thc thi, nu nh trong [Khi_lnh] khng c cu lnh no tc ng
ln <iu_kin> n nhn gi tr ngc li th vng lp ny s khng bao gi kt thc v
lm cho ng dng b treo. thot khi vng lp ngay lp tc ta c th dng t kha
Exit Do t trong [Khi_lnh].
9. Chng trnh con
V c bn, chng trnh con l mt khi cc cu lnh v chng c s dng lp li trong
chng trnh chnh thng qua tn ca chng trnh con. Chng trnh con c bit hu ch khi
thay th cc khi lnh lp nhau hoc cng thc thi mt chc nng tng t no .
C hai loi chng trnh con chnh l Hm (Function) v Th tc (Sub). Ngoi ra, trong cc
m-un lp (Class Module) cn c chng trnh con dng thuc tnh (Property), tuy nhin
trong ca gio trnh s khng trnh by v loi chng trnh con ny.
C php tng qut ca mt chng trnh con nh sau:
[Private|Friend|Public][Static]<Sub|Function|Property>
Tn([cc_tham_s])
[Khi_lnh]
End <Sub|Function|Property>
Trong phn thn chng trnh con c bc gia phn khai bo v phn kt thc (c t kha
End).
Cc t kha [Private|Public|Friend] xc nh phm vi hot ng ca chng trnh
con. Khi nim phm vi ny cng tng t nh phm vi ca bin c trnh by phn trc.
T kha [Static] xc nh cch thc cp pht b nh cho cc bin khai bo bn trong chng
trnh con (s trnh by c th phn sau).
Ch : t kha Friend ch c s dng trong m-un lp hoc m-un lnh ca UserForm


9.1. Hm (Function)
L chng trnh con c tr v gi tr khi n c gi. C php khai bo nh sau:
[Private/Public/Friend][Static] Function <Tn_hm> ([Cc_tham_s]) as
<kiu_d_liu>
[Khi_lnh]
End Function
V d: to hm tnh din tch ca hnh ch nht, vi hai tham s cn nhp vo l chiu rng v
chiu di ca hnh ch nht.
Function Dien_Tich(Rong As Double, Dai As Double) as Double
Dien_Tich=Rong*Dai
End Function
9.2. Th tc (Sub)
L chng trnh con khng tr v gi tr khi c gi. C php khai bo nh sau:
[Private/Public/Friend][Static] Sub <Tn_hm> ([Cc_tham_s])
[Khi_lnh]
End Sub
V d: to mt chng trnh con dng th tc c tnh nng nh phn trn c th vit m lnh
nh sau:
Sub Dien_Tich(Rong as Double, Dai as Double, Dt as Double)
Dt=Rong*Dai
End Sub
Trong v d ny, v chng trnh con khng c gi tr tr v nn nhn v gi tr din tch
phi b sung thm tham s Dt vo trong danh sch tham s ca chng trnh con.
9.3. Truyn tham s cho chng trnh con
Ta xt v d sau:
Mt chng trnh con n gin c to ra nh sau:
Public Sub Test(ByRef a As Long, b As Single, ByVal c As Long)
a = 100: b = 200: c = 300
End Sub
Ch n khai bo bin a, b v c ca chng trnh con ny:
Trc bin a l t kha ByRef.
Trc bin b khng c t kha, ngha l s dng kiu mc nh ca VB.
Trc bin c l t kha ByVal.
Chng trnh con th hai c xy dng trn cng mt m-un vi chng trnh con trn
nh sau:
Public Sub CallTest()


Dim va As Long, vb As Long, vc As Long
va = 500: vb = 500: vc = 500
Debug.Print " Cac gia tri bien truoc khi goi chuong trinh con:"
Debug.Print "va=" & Str(va)
Debug.Print "vb=" & Str(vb)
Debug.Print "vc=" & Str(vc)
Test va, vb, vc ' goi chuong trinh con
Debug.Print " Cac gia tri bien sau khi goi chuong trinh con:"
Debug.Print "va=" & Str(va)
Debug.Print "vb=" & Str(vb)
Debug.Print "vc=" & Str(vc)
End Sub
Trong chng trnh con ny, chng trnh con ban u c tn l Test c s dng nhm mc
ch minh ha s thay i ca cc tham s khi chng c truyn vo chng trnh con. Kt
qu nh sau:

Qua kt qu trn c th thy rng:
Gi tr ca bin c th b thay i hoc khng b thay i khi chng c truyn vo
chng trnh con l ph thuc vo cch nh ngha tham s trong chng trnh con .
Bin a trong Sub Test c khai bo vi t kha ByRef v khi truyn bin v tr
ny (bin va trong CallTest) th gi tr ca bin ban u b thay i tng ng vi
cc tc ng trong chng trnh con.
Bin b trong Sub Test c khai bo mc nh (khng c t kha no pha trc n)
v khi truyn bin v tr ny (bin vb trong CallTest) th gi tr ca bin ban u b
thay i tng ng vi cc tc ng trong chng trnh con.
Bin c trong Sub Test c khai bo vi t kha ByVal v khi truyn bin v tr
ny (bin vc trong CallTest) th gi tr ca bin ban u khng b thay i cho d
trong chng trnh con bin ny b tc ng.
Qua v d trn c th thy rng vic truyn tham s cho chng trnh con c th c phn lm
hai trng hp v c t tn l truyn tham s theo tham chiu v truyn tham s theo tham
tr.
9.3.1. Truyn tham s theo tham chiu
Khi truyn mt bin vo tham s theo kiu tham chiu, a ch ca bin s c truyn cho
chng trnh con. Do , bt k cu lnh no ca chng trnh con tc ng ln tham s s nh
hng trc tip ln bin c truyn tng ng, ngha l khi chng trnh con kt thc, gi tr
ca bin c truyn theo kiu ny s b thay i do chng trnh con. Truyn tham s theo kiu
tham chiu l mc nh trong VB, ngi dng cng c th ch r vic truyn theo tham chiu
bng cch thm t kho ByRef vo trc khai bo tham s.


9.3.2. Truyn tham s theo tham tr
Khi truyn mt bin vo tham s theo kiu tham tr, bn sao gi tr ca bin s c truyn cho
cho chng trnh con. Do , nu trong chng trnh con c cc cu lnh tc ng ln tham s
th ch bn sao b nh hng v bin truyn vo s khng b thay i, ngha l sau khi chng
trnh con kt thc, gi tr ca bin vn c gi nguyn nh ban u. xc nh cch thc
truyn d liu cho mt tham s theo kiu tham tr, thm t kho ByVal vo trc khai bo tham
s.
Trong Sub Test trn, a v b l hai tham s c truyn theo kiu tham chiu cn c c
truyn theo kiu tham tr.
9.3.3. Tham s tu chn.
Tham s tu chn l tham s c th c hoc c b qua khi gi chng trnh con.
Cc tham s tu chn c khai bo vi t kho Optional v trong mt chng trnh con, cc
khai bo ca cc tham s tu chn lun phi nm cui danh sch tham s c khai bo.
V d: vit chng trnh con tnh ton din tch ca mt ct ch nht c khot l (nh hnh di)
vi yu cu sau:
Tnh din tch mt ct vi cc thng s v chiu rng w, chiu cao h v bn knh r ca l
khot.
Trong trng hp thiu thng s v bn knh r, ch tnh din tch mt ct ch nht v b
qua l khot.

Sau y l m lnh tham kho:
Public Function DT(w As Double, h As Double, Optional r As Double)
If Not IsMissing(r) Then
If (2 * r <= w) And (2 * r <= h) Then
DT = w * h - pi * r ^ 2
Else
MsgBox " Co loi, lo khoet vuot ra ngoai hinh"
DT = "Error"
End If
Else
DT = w * h
End If
End Function
Sau khi to m lnh trn, nu mun tnh din tch cho mt ct vi w =100, h =200, r =20 c th
gi hm nh sau: DT(100,200,20) tnh din tch c xt n khot l vi bn knh l 20,
hoc DT(100,200) tnh din ca hnh ch nht (cha c l).
bit c mt tham s tu chn b b qua khi gi chng trnh con hay khng, dng
hm IsMissing (tham_s). Hm ny tr v True nu tham s b b qua, False nu
tham s c mt.
9.3.4. Danh sch tham s vi s lng tham s tu .


VB6 cho php to mt chng trnh con vi danh sch tham s tu (ngha l s lng cc tham
s c th thay i khi gi chng trnh con) thng qua vic t t kho ParamArray trc
danh sch tham s. Khi danh sch tham s l tu chn v c dng mt mng kiu Variant.
V d: vit mt hm tnh tng ca tt c cc s truyn vo vi s lng s c truyn l tu .
M lnh tham kho nh sau:
Public Function TinhTong(ParamArray ds())
Dim So As Variant
Dim Tong As Variant
Tong = 0
For Each So In ds
Tong = Tong + So
Next
TinhTong = Tong
End Function
Khi :
TinhTong(100,200,-200) cho kt qu l 100
TinhTong(2,300) cho kt qu l 302
9.3.5. Hm c gi tr tr v l kiu mng.
khai bo mt hm tr v mng, thm cp k t ( ) sau khai bo hm
[Private/Public] Function <Tn_hm> ([danh sch tham s]) as _
<kiu_d_liu> ()
[Khi_lnh]
End Function
V d: vit chng trnh con sp xp cc phn t trong mng mt chiu v tr v mt mng c
th t tng dn.
M lnh tham kho nh sau:
Public Function Mang_tangdan(Mang_bandau() As Double) As Double()
Dim Lb As Long, Ub As Long ' bien dau va cuoi cua mang
Dim i As Long, j As Long
Lb = LBound(Mang_bandau): Ub = UBound(Mang_bandau)
Dim Mang_tamthoi() As Double Khai bao mot mang tam thoi
Mang_tamthoi = Mang_bandau
Dim Tg As Double
For i = Lb To Ub - 1
For j = i + 1 To Ub
If Mang_tamthoi(i) > Mang_tamthoi(j) Then
Tg = Mang_tamthoi(i)
Mang_tamthoi(i) = Mang_tamthoi(j)
Mang_tamthoi(j) = Tg
End If
Next
Next
Mang_tangdan = Mang_tamthoi
Erase Mang_tamthoi ' Huy mang tam thoi
End Function
Chng trnh th nghim hm trn:


Public Sub test()
Dim a(2 To 6) As Double
a(2) = 1: a(3) = 6: a(4) = 0.5: a(5) = 2.3: a(6) = 4
Dim b() As Double
b = Mang_tangdan(a) Goi ham da viet
Dim so As Variant
Debug.Print "Cac phan tu cua mang ban dau:"
For Each so In a
Debug.Print so
Next
Debug.Print "Cac phan tu cua mang sau khi sap xep:"
For Each so In b
Debug.Print so
Next
End Sub
Kt qu nh sau:

9.4. Bin trong chng trnh con
Nh trnh by phn trc, bin trong chng trnh con c tnh cht cc b. Tuy nhin hnh
thc cp pht b nh cho bin th c th khc nhau. C th nh sau:
Trong phn khai bo ca chng trnh con khng s dng t kha Static.
Khi c hai trng hp:
Cc bin c khai bo vi t kha Dim: mi ln chng trnh con c gi, bin s c to
v cp pht b nh. Khi chng trnh con kt thc, b nh dnh cho bin c gii phng. Do
, gi tr ca bin sau mi phin lm vic ca chng trnh con s khng c lu tr.
Cc bin c khai bo vi t kha Static: bin s c khi to mt ln khi m-un cha
chng trnh con c np vo trong b nh v s tn ti trong b nh cng vi m-un . V
vy, gi tr ca bin sau mi phin lm vic ca chng trnh con s c lu tr. Cc bin kiu
ny c gi l bin tnh (Static)
V d: trong chng trnh con StVariable di y c hai bin a phng, stA l bin tnh
v B l bin thng thng.
Public Sub StVariable()
Static stA As Long
Dim B As Long
B = B + 1
stA = stA + 1


Debug.Print "Lan chay " & Str(stA), "stA=" & Str(stA), "B=" &
Str(B)
End Sub
Kt qu sau 2 ln chy chng trnh con trn

Gii thch: Ngay khi c khai bo, tt c cc bin u c t ng khi to gi tr ban u,
nu kiu d liu ca bin l dng s th gi tr khi to bng 0, cn nu kiu d liu ca bin l
chui th gi tr khi to mc nh l chui rng. Trong chng trnh trn, ngay trc khi kt
thc ln chy u tin, gi tr ca cc bin nh sau:
Bin B = 1.
Bin stA = 1.
Khi kt thc ln chy th nht, bin B (bin thng thng) s c gii phng, cn bin stA
(bin tnh) vn c lu gi tr (=1) ca n li trong b nh. Do n ln chy th hai, bin B
c to mi s nhn gi tr l B=B+1=0+1=1, cn bin stA do vn tn ti t ln trc nn gi
tr ca n l stA=stA+1=1+1=2.
Trong khai bo ca chng trnh con c s dng t kha Static
Khi tt c cc bin khai bo trong chng trnh con s l cc bin tnh.
V d: trong chng trnh con StPro di y s dng khai bo Static u chng
trnh.
Public Static Sub StPro()
Dim a As Long
Dim b As Long
a = a + 1
b = b + 1
a = a + b
Debug.Print "Lan chay " & Str(b)
Debug.Print " ", "a=" & Str(a), "b=" & Str(b)
End Sub
Kt qu sau 2 ln chy chng trnh con nh sau:



Cc bin tnh thng c s dng khi mun lu tr kt qu nhng ln chy ca chng
trnh con. Ch rng d bin trong chng trnh con l bin thng thng hay bin tnh th
vn lun mang tnh cht cc b.
9.5. Cch thc gi chng trnh con.
Vi trng hp d n (Project) gm nhiu thnh phn (cc m-un chun, cc UserForm,) c
cha m lnh, ngha l c th xy dng hoc c nhu cu s dng chng trnh con, th trong
cng mt m-un, khng c php xy dng hai chng trnh con trng tn nhau, nhng quy
nh ny khng p dng cho cc m-un khc nhau, ngha l c th tn ti hai chng trnh con
c tn ging ht nhau hai m-un khc nhau. Trong trng hp trng tn ny, khi mun s
dng chng trnh con no th phi ch r ni cha n, v tt nht, khi s dng bt c chng
trnh con no ca m-un khc th nn ch r c tn m-un .
Gichngtrnhcondnghm(Function)
Khi gi chng trnh con dng hm (Function), danh sch tham s phi c t trong cp
k t ( ) sau tn chng trnh con.
<Tn_m-un>.<Tn_hm>(<danh_sch_tham_s>)
M-un y c th l mt m-un chun (Module), UserForm hoc mt i tng m
ngi dng ang xt. Danh sch tham s phi c truyn theo ng th t nh phn
khai bo chng trnh con.
V d: m-un chun mdlMatcat cha hm TinhDTHH(h,b) th c php gi hm l:
mdlMatcat.TinhDTHH(ph,pb)
vi ph, pb l nhng bin c truyn vo trong hm.
Gichngtrnhcondngthtc(Sub)
Khi gi chng trnh con dng th tc (Sub), danh sch tham s t tip sau tn th tc v k t
trng, cc tham s khng cn t trong cp k t ( ).
<Tn_m-un>.<Tn_th tc> <danh_sch_tham_s>
V d: trong m-un chun mdlDAH cha th tc TinhDTDAH(S) th c php gi th tc l:
mdlDAH.TinhDTDAH pS
vi pS l nhng bin c truyn vo trong th tc.
Gichngtrnhconviccthamsgntheotn
Trong cch gi chng trnh con theo kiu thng thng nh trn, danh sch tham s truyn vo
phi ng th t nh trong phn khai bo ca chng trnh con . Ngoi ra, VB cn cho php
gi chng trnh con vi trt t tham s tu m vn m bo s truyn tham s chnh xc
thng qua tn ca tham s.
V d, vi hm DT(w,h,r) phn trn th hai cch gi sau l tng ng:
DT (100,200,30)
DT (r:=30, w:=100, h:=200)


Trong dng th nht, lun c s ngm hiu trnh t cc tham s l: w,h,r, y chnh l trnh t
khi nh ngha hm DT. Cn dng th 2, trnh t theo nh ngha ca hm DT khng c ngha
na bi c s ch r: Tn bin := Gi tr cn gn. Ch n k hiu ( := ) v
trnh t bt k ca cc tham s.
Vic s dng tham s gn theo tn khi gi chng trnh con c bit tin li khi chng trnh
con c nhiu tham s tu chn v ngi dng khng c nh s dng ht cc tham s .
9.6. Thot khi chng trnh con.
thot khi hm s dng lnh Exit Function
thot khi th tc s dng lnh Exit Sub
Ngay khi gp hai hm ny trong thn ca chng trnh con, ton b cc dng lnh pha sau n s
b b qua v chng trnh s thot ngay khi chng trnh con .
10. T chc cc chng trnh con theo h thng cc m-un
chun (Module)
Vi vic thit k h thng theo phng php cu trc, ton b chng trnh thng c chia
thnh cc khi chng trnh nh hn, mi khi chng trnh m nhn mt chc nng chung no
. d dng cho vic xy dng chng trnh, cc chc nng chung li c chia thnh cc
phn nh hn na, cho n khi no mi phn ny c th minh ha bng mt chng trnh con.
Trong lp trnh VBA, cc khi chc nng c th c t chc thnh cc m-un chun
(Module). Trong m-un chun s bao gm cc chng trnh con (hm v th tc) phn nh s
chi tit ho cho cc khi chc nng ny. Ngoi ra, tng ng vi chc nng m m-un m
nhim, cn c th c cc khai bo khc nh khai bo cc kiu ngi dng t nh ngha, cc bin
dng chung, cc hng s,
V d: xy dng mt chng trnh kim ton mt ct ct BTCT, c th xy dng cc m-un
v cc chng trnh con theo hnh v di y di y

Hinh_Hoc
(Module)
TinhDTHH_MCatBT
TinhDTHH_MCatCT
TinhDTHH_TinhDoi
Tinh_Duyet
(Module)
LapTH_TaiTrong
TTGH_CuongDo
TTGH_SuDung



Hnh 3-17: T chc d n theo cu trc chc nng

11. Lm vic vi UserForm v cc thnh phn iu khin
11.1. Cc vn chung
Trong mt d n VBA, cc m-un chun cho php xy dng cc khi chng trnh x l d
liu hoc cc khai bo v d liu. S giao tip nhp-xut d liu gia ngi dng v chng
trnh c th c thc hin thng qua giao din ca ng dng nn. Tuy nhin, trong nhiu trng
hp giao din nhp-xut d liu ca ng dng nn cha th p ng c nhu cu tng tc d
liu mt cch chi tit cng nh tin li cho ngi s dng, v khi , cn to ra cc giao din
nhp-xut ring thng qua vic s dng cc UserForm trong d n VBA. Ni cch khc, giao
tip gia ngi s dng chng trnh vi chng trnh vit bng VBA c gi l giao din ca
chng trnh v cch xy dng giao din nh sau:


S dng ngay ng dng nn lm giao din, cch ny s trnh by c th trong cc
chng sau.
S dng UserForm.
Kt hp c hai phng n trn.
Cc UserForm thc cht l mu cc hp thoi (ca s) c to ra theo yu cu ca ngi dng.
Trn mt UserForm lun cha nhng thnh phn phc v cho nhu cu tng tc gia ngi
dng v chng trnh: nhp cc d liu cn thit, ra lnh x l, la chn d liu theo tnh hung,
hin th kt qu x l mt cch trc quan, Nhng thnh phn c gi l cc iu khin
(Control).


to ra UserForm, lm theo trnh t sau:
1. Xc nh s cn thit phi to giao din nhp-xut d liu ring: Giao din do ng dng nn
cung cp khng hoc khng thch hp cho vic nhp d liu hoc xut kt qu ca
chng trnh.
2. Xc nh cch thc v trnh t tng tc ca ngi s dng trn giao din: c th b tr
cc iu khin sao cho thun tin i vi ngi dng, v d nh da theo thi quen iu
khin ca a s ngi s dng l t tri sang phi, t trn xung di.
3. Xc nh s lng UserForm cn phi to cho qu trnh nhp d liu cng nh vic hin th
kt qu: ch nn s dng va v phn theo ch ca cng vic, v d nn phn tch giao
din nhp d liu vi giao din trnh by kt qu v cc iu khin (nt bm) khc.
4. Xc nh cc loi d liu cn nhp vo, cc d liu theo tnh hung v cc minh ho bng
hnh nh km theo gii thch r cho ngi s dng ngha ca cc thng s cn c
nhp vo. Cn c vo cc loi d liu cn nhp trn xc nh cc thnh phn iu khin
ph hp v a vo UserForm tng ng. Cn ch rng, cc iu khin, ngoi vic p
ng yu cu v mt chc nng, chng cng cn c trnh by v gii thch mt cch d hiu
v c tnh thm m.
iu khin cho
php nhp d
liu dng vn
bn
iu khin cho
php ngi
dng ra lnh
thng qua vic
kch chut.
iu khin cho
php chn hnh
nh minh ho.
iu khin la chn d liu



Hnh 3-18: ngha cc loi d liu cn nhp vo c minh ha bng hnh nh
5. La chn cc iu khin phc v cho vic xc nhn d liu sau khi nhp xong hoc ra lnh
cho qu trnh x l cc d liu ny bt u thc hin. Thng thng cc iu khin ny l h
thng cc nt bm (Button) xc nhn cc d liu nhp xong, yu cu bt u x l
hoc hy b cc d liu nhp.

Hnh 3-19: B tr cc iu khin trn UserForm


6. La chn hnh thc hin th kt qu t la chn cc thnh phn iu khin ph hp, v d
nh kt qu tnh ton l s hoc hnh v th cn chn iu khin thch hp trnh by.

Hnh 3-20: Trnh by kt qu bng iu khin h tr vn bn v hnh nh
7. Vit cc m lnh cho cc thnh phn iu khin, cc m lnh ny s c lu tr trong phn
code ca UserForm.
11.1.1. To UserForm v cc thnh phn iu khin trong VBA IDE
Trong VBA IDE, UserForm c to ra bng cch:
Menu Insert UserForm
Sau khi to UserForm, ta c th thm cc thnh phn iu khin vo UserForm bng cch la
chn iu khin cn dng t hp cng c iu khin (Control Toolbox) v thc hin thao tc
ko/th vo v tr thch hp UserForm. Kch thc ca iu khin c th thay i mt cch d
dng nh thao tc ko chut vng bin ca chng.


Thng thng trong hp cng c mc nh ca VBA IDE ch c cc thnh phn iu khin
chun ca VB, cc iu khin ny p ng c hu ht cc nhu cu c bn v thit k giao
din. Tuy nhin ngi dng c th b sung nhng thnh phn iu khin khc vo hp cng c
iu khin c
la chn trn
Control Toolbox
iu khin c to bng cch ko/th vo UserForm


trn bng cch s dng Additional Controls c sn trn hp cng c (hin th bng cch nhn
chut phi vo hp cng c). Vi mi my tnh khc nhau th ni dung cc iu khin c th b
sung l khc nhau bi chng phc thuc vo cc th vin lp trnh c ci t trn my tnh .

Hnh 3-21: B sung thm iu khin cho hp cng c (Toolbox) ca VBA IDE
11.1.2. Cc thuc tnh ca UserForm v cc thnh phn iu khin.
Cc thuc tnh (Properties) l cc thng s quy nh c im, tnh cht cng nh trng thi ca
UserForm hay cc iu khin, v d mu nn ca mt iu khin c quy nh bi thuc tnh
BackColor. Nhng thuc tnh ny c th c thay i trong lc thit k UserForm hoc lc
chng trnh ang chy. Tuy nhin mt s thuc tnh khng cho php thay i m ch cho php
ngi dng bit c gi tr ca n (thuc tnh ch c Read Only). Trong qu trnh thit k
UserForm, khi ta dng chut chn bt c thnh phn no trn UserForm (k c chnh UserForm)
th cc thuc tnh ca n s c hin th tng ng trong ca s Properties ca VBA IDE.

Hnh 3-22: Thnh phn iu khin v v tr hin th cc thuc tnh ca n.


Mt s thuc tnh c bn ca UserForm v cc iu khin:
Name: th hin tn ca UserForm hay iu khin. y l thuc tnh rt quan trng, l yu
t xc nh iu khin khi lp trnh. Thuc tnh ny ch c thay i lc thit k giao din
(trong ca s Properties ca VBA IDE).
BackColor: l mt gi tr kiu Long th hin mu nn ca UserForm hay iu khin.
Caption: l mt gi tr kiu String th hin tiu ca UserForm hay iu khin.
Enable: l mt gi tr kiu logic (Boolean) xc nh trng thi lm vic ca iu khin, gi
tr bng True ng vi trng thi hot ng, gi tr bng False ng vi trng thi khng hot
ng (iu khin coi nh b v hiu ho v thng c hin th m i trn UserForm).
Visible: l mt gi tr kiu logic (Boolean) xc nh trng thi hin th ca iu khin, gi
tr bng True ng vi s hin th iu khin, gi tr bng False ng vi s n iu khin.
Font: th hin kiu v c ch hin th trn UserForm hoc iu khin.
Picture: th hin hnh nh trn nn UserForm hoc iu khin.
ControlTipText: l mt gi tr kiu String th hin ch thch v iu khin khi chut di
chuyn qua (Tool tip) trong lc chng trnh hot ng.
MouseIcon: th hin biu tng con tr chut hin th trn iu khin.
MousePointer: th hin loi con tr chut hin th trn nt lnh.
Ngoi ra, ng vi mi loi iu khin c th cn c thm nhiu thuc tnh khc hoc khng
c mt s cc thuc tnh c lit k trn. Ngi dng c th tm hiu cc thuc tnh ny
trong Object Browser hoc trong Help Online (chn iu khin v bm F1) ca VBA IDE.
Vic thay i thuc tnh ca cc iu khin c th c thc hin bng hai cch:
1. Cch 1: Thay i trc tip trong qu trnh thit k: chn iu khin v thay i gi tr ca
cc thuc tnh trong ca s Properties ca VBA IDE. Cch ny trc quan v d thc hin
i vi a s cc thuc tnh ca hu ht cc iu khin. V d: thay i tiu cho mt
UserForm di y, kch chut chn UserForm sau nhp tn ca tiu vo phn
Caption ca ca s Properties.

Hn 3-23: Thay i gi tr thuc tnh trong khi thit k UserForm.


2. Cch 2: Thay i trong lc chng trnh ang chy: v thc cht, cc thuc tnh chnh l d
liu ca cc thnh phn iu khin (thng gi chung cc iu khin ny l i tng) hay
chnh l cc bin c nh ngha ring cho iu khin cho nn ta c th s dng php
gn thng thng thay i gi tr cho mt s thuc tnh. C php thc hin nh sau:
<Tn_iu_khin>.<Tn_thuc_tnh> = gi tr thuc tnh
<Tn_UserForm>.<Tn_thuc_tnh> = gi tr thuc tnh
Tn_iu_khin hay Tn_UserForm y chnh l gi tr thuc tnh Name ca iu khin
c t khi thit k. Khi vit m lnh trong mt UserForm th c th thay vic dng tn ca
UserForm bng t kho Me.
V d, ng vi UserForm c tn l UserForm1 nh trn, c th thay i tiu ca n bng m
lnh nh sau:
UserForm1.Caption = Cua so chinh
11.1.3. Cc phng thc ca UserForm v cc thnh phn iu khin.
Cc phng thc c th xem chng l nhng chng trnh con c bit, chng ch lm vic vi
cc d liu ca iu khin v tng tc ln chnh iu khin . phng thc hot ng, cn
phi gi n (tng t nh gi chng trnh con) bng m lnh khi lp trnh. C php gi phng
thc ca mt iu khin hay UserForm cng tng t nh vi bin i tng:
<Tn_iu_khin>.<Tn_phng_thc> <(tham_s_ca_phng_thc)>
<Tn_UserForm>.<Tn_phng_thc> <(tham_s_ca_phng_thc)>
V d: mun hin th UserForm1 nh trn, gi phng thc Show ca n vi m lnh nh sau:
UserForm1.Show
Trong phm vi ca gio trnh, khng th lit k tt c cc phng thc ca cc iu khin.
Trong phn sau s trnh by mt s cc phng thc c bn ca mt s loi iu khin
thng dng. bit chi tit v nhng phng thc khc, c th tra cu trong Object
Browser hoc trong Help Online ca VBA IDE
11.1.4. Cc s kin trn giao din.
Cc s kin trn UserForm hoc cc iu khin c pht sinh khi c mt hot ng no xy
ra thng c pht sinh t pha ngi dng (s kin cng c th c pht sinh mt cch
gin tip t qu trnh thc hin mt phng thc no ).V d, khi ngi dng r chut trn b
mt UserForm s pht sinh s kin MouseMove, khi ngi dng kch chut trn UserForm s
pht sinh s kin Click.
i cng vi s kin cn c th tc s kin: l chng trnh c thi hnh khi s kin xy ra.
Th tc s kin cho php ngi lp trnh x l cc tng tc ca ngi dng trn giao din bng
cch vit cc m lnh trong th tc s kin.
vit m lnh cho mt th tc s kin trn mt UserForm, vo ca s m lnh ca UserForm
(nhy p chut vo UserForm), chn iu khin v loi s kin tng ng. Sau vit m
lnh vo trong th tc s kin c to ra.



Mt s s kin c bn ca UserForm v cc iu khin:
Click: xy ra khi ngi dng kch chut trn UserForm hoc trn iu khin
DblClick: xy ra khi ngi dng kch p chut trn UserForm hoc trn iu khin
KeyPress: xy ra khi ngi dng nhn mt phm.
KeyUp: xy ra khi ngi dng nh mt phm (sau khi nhn xung).
KeyDown: xy ra khi ngi dng nhn mt phm (nhng cha nh ra).
MouseMove: xy ra khi ngi dng r chut ngang qua mt iu khin hoc trn
UserForm.
MouseUp: xy ra khi ngi dng nh phm chut (sau khi nhn chut).
MouseDown: xy ra khi ngi dng nhn phm chut (nhng cha nh ra).
11.1.5. V d
To mt UserForm v vit m lnh khi kch chut vo UserForm s hin th s ln kch chut
trn tiu ca n ng thi i mu nn ca UserForm theo tnh hung: nu s ln kch chut
l chn th mu en, l l th mu trng.
Cc thao tc nh sau:
1. Thm UserForm vo trong d n bng cch chn Insert UserForm.
2. t tn UserForm l usfCuaso1 trong thuc tnh Name ca ca s Properties; t tiu
xut pht ca UserForm l Cua so chinh trong thuc tnh Caption ca ca s Properties.
Chn i tng Chn s kin
Th tc s kin gn vi i tng c pht sinh



3. Vit m lnh cho s kin Click ca UserForm (hin th ca s lnh ca UserForm bng cch
nhy p chut vo UserForm, chn UserForm v s kin Click).
M lnh cho th tc s kin Click nh sau:
Private Sub UserForm_Click()
Static numClick As Long
numClick = numClick + 1
If numClick Mod 2 = 0 Then
Me.BackColor = vbBlack
Else
Me.BackColor = vbWhite
End If
usfCuaso1.Caption = "Number of Click: " & Str(numClick)
End Sub
Trong on m trn, vbBlack l hng s tng ng vi mu en, vbWhite l hng s tng
ng vi mu trng. Hai hng s ny c nh ngha sn trong VB.
11.2. Lm vic vi UserForm
Cc nguyn tc lm vic vi UserForm nh thit lp v thay i thuc tnh, gi cc phng thc
hay x l cc s kin c trnh by phn trc. Di y ch gii thiu mt s phng
thc khc ca UserForm.
Hin th UserForm: thc hin phng thc Show
Tn_UserForm.Show [vbModal/ vbModeless]
Nu dng vbModal (hoc 1): hp thoi (UserForm) s hin th dng Modal tc l lun tip
nhn tng tc ngi dng vi hp thoi, ngi dng ch c th chuyn hng tng tc sang
ni khc khi ng hp thoi. y l kiu hin th mc nh ca hp thoi.
Nu dng vbModeless (hoc 0): hp thoi vn c hin th nhng ngi dng c th chuyn
hng tng tc sang ni khc m khng cn ng hp thoi.
n UserForm: gi phng thc Hide


Tn_UserForm.Hide
Quay li trng thi trc lnh cui cng c thc hin trn UserForm: thc hin phng
thc UndoAction
Tn_UserForm.UndoAction
Tr li trng thi trc khi thc hin Undo: thc hin phng thc RedoAction
Tn_UserForm.RedoAction
Vd
To mt UserForm vi cc iu khin nh hnh di y:

Trnh t nh sau:
1. Thm mt UserForm vo d n.
2. Chn vo UserForm va to, chn biu tng trong hp cng c iu khin (Control
Toolbox). Sau , r th chut trn UserForm to mt hp vn bn (TextBox).
3. Tip tc chn UserForm trn, chn biu tng trong hp cng c iu khin, r th
chut to mt nt lnh (Command Button), t tn (thuc tnh Name) ca nt lnh l
cmdUndo, t tiu (thuc tnh Caption) ca nt lnh l Undo.
4. Tng t nh trn to nt lnh cmdRedo vi tiu Redo.
5. Vit cc th tc s kin Click cho cc nt lnh trn nh sau:
Private Sub cmdRedo_Click()
Me.RedoAction
End Sub
Private Sub cmdUndo_Click()
Me.UndoAction
End Sub
Sau , chn UserForm v nhn phm F5 chy chng trnh. Nhp mt dng vn bn vo
trong hp vn bn. Kch chut vo nt Undo, sau l nt Redo v theo di kt qu.
11.3. Cc iu khin thng dng
Theo mc nh, trn Toolbox c sn mt s iu khin thng dng trong th Control, nhng iu
khin ny p ng c hu ht nhu cu thit k giao din thng thng trn UserForm. Trong
nhng phn trc nhc nhiu n vic s dng cc iu khin trn Toolbox nhng cha c


tnh h thng v vy phn ny s trnh by nhng ni dung c bn c th s dng mt cch
hiu qu cc iu khin ny.

Hnh 3-24: Cc iu khin c bn theo mc nh trong VBA IDE
1. Nt lnh (Command Button)
Command Button thng c dng thc hin mt quyt nh no t pha ngi
dng (thng qua vic kch chut vo Command Button hoc nhn Enter).
Command Button nn c thuc tnh Caption (tiu ) v Picture (hnh nh) phn nh
ng tnh nng m n m nhn. S kin hay c gi khi s dng Command Button l s
kin Click hoc DblClick (kch p chut).
thay i v tr ca Command Button trong khi chy chng trnh, s dng phng thc
Move
Tn_Command Button.Move [Left ], [Top], [Width], [Height]
Trong cc tham s th hin v tr gc tri trn (left, top) v kch thc (Width, Height)
mi ca Command Button sau khi di chuyn.
thit lp trng thi nhn lnh (nhn tiu im focus), s dng phng thc
SetFocus
Tn_Command Button.SetFocus
Cc phng thc Move v SetFocus nh trn khng ch p dng i vi Command Button,
m cn c p dng vi a s cc iu khin khc.
2. Hp vn bn (TextBox)
TextBox c dng nhp d liu dng vn bn (text) v n c iu khin bng cch thit
lp nhng thuc tnh hay s kin hoc s dng cc phng thc ph hp. Di y l mt s
thnh phn chnh dng iu khin TextBox:
Thuc tnh: dng thit lp cch thc hin th cho TextBox

Thuc tnh M t Ghi ch
Text Ni dung vn bn cha trong iu khin. Kiu String
TextAlign Cch thc hin th vn bn trong iu khin Tham kho Object Browser
9 3
2
7
6
4
5
8
1


MaxLength Qui nh di ti a ca vn bn trong iu
khin
(Nu t MaxLength=0, di ca vn bn
l tu )
Kiu Long
MultiLine Hin th nhiu dng hay mt dng Kiu Boolean
ScrollBars Hin th thanh cun ngang hay dc nu ni
dung vn bn ln hn kch thc ca iu
khin
Tham kho Object Browser
Cc phng thc h tr vic nhp vn bn vo TextBox:

Phng thc M t Ghi ch
Copy Chp ni dung c nh du trong iu
khin vo b nh m
Cut Di chuyn ni dung c nh du trong
iu khin vo b nh m
Paste Chp ni dung t b nh m vo iu khin
Tham kho trong Object
Browser hoc Help
Cc s kin: thng dng x l khi c tc ng ln TextBox, thng s dng hai s
kin l: KeyPress v Change. S kin, v bn cht l mt chng trnh con dng Sub
v c t ng gi ra tng ng vi tc ng no ln TextBox, v d nh bm phm
hay thay i ni dung.
S kin Change c gi khi ni dung vn bn trong TextBox b thay i. Cn s kin
KeyPress c gi khi c mt phm c nhn khi con tr ang nm trong iu khin. S
kin KeyPress c mt tham s l KeyAscii. Tham s ny c kiu Integer v cha m
ASCII ca phm c nhn ( bit m ASCII ca cc phm, tham kho KeyCodeConstants
trong Object Browser).
3. Nhn (Label)
Label thng c s dng hin th mt vn bn ngn gn trn UserForm hoc dng km vi
mt iu khin no trn UserForm vi mc ch l gii thch nh s dng cho iu khin
. Ni dung vn bn trong Label c thit lp hoc thay i thng qua thuc tnh Caption
ca n. Tng tc vi thuc tnh Caption ca Label cng tng t nh i vi thuc tnh
Caption ca tt c cc iu khin khc v c trnh by cc phn trc.

4. Hp nh du (CheckBox)
iu khin Label gii
thch cho d liu trong
hp vn bn di
iu khin Label hin
th kt qu dng vn
bn ngn


CheckBox thng c s dng la chn thng tin ph hp trong mt danh sch cc thng
tin lin quan c lit k hoc dng b sung ni dung cho mt d liu no .
thit lp hay c trng thi ca CheckBox (c chn hay khng c chn), s dng thuc
tnh Value. Thuc tnh ny c kiu Boolean, nu gi tr ca n l True th c ngha l
CheckBox c chn, gi tr l False ngha l CheckBox khng c chn.
V d: to giao din nhp d liu v tnh tng cc s t 1 n n vi ty chn bng CheckBox nh
sau:
Nu khng chn CheckBox (khng nh du) th tnh tng ca cc s t 1 n n.
Nu chn CheckBox (nh du) th ch tnh tng cc s chn trong khong t 1 n n.
Thit k UserForm vi cc thnh phn nh hnh di y:

M lnh cho th tc s kin Click cho nt lnh cmdTinh nh sau:
Private Sub cmdTinh_Click()
Dim i As Long
Dim so As Long
so = CLng(txtSo.Text) ' chuyen doi du lieu tu txtSo vao bien so
Dim tong As Double
tong = 0
Dim buocnhay As Long ' buoc nhay cua bien chay
If chkChonsochan.Value Then xet lua chon chi tinh tong so chan
buocnhay = 2
Else
buocnhay = 1
End If
For i = 0 To so Step buocnhay
tong = tong + i
Next
lblKetqua.Caption = "Ket qua: " & Str(tong) hien thi ket qua
End Sub

Label
Name: lblSo
TextBox
Name: txtSo
TextBox
Name: txtSo
Command Button
Name: cmdTinh
Label
Name: lbKetqua


5. Nt tu chn (OptionButton)
OptionButton thng c dng yu cu ngi dng chn mt trong cc thng tin c lit
k sn. to nhm cc OptionButton, ta c th t chng trong mt iu khin khung (Frame)
hoc t chng trn UserForm.

thit lp trng thi chn hay khng chn cho OptionButton, s dng thuc tnh Value, thuc
tnh ny c kiu Boolean. Nu gi tr ca n l True th c ngha l OptionButton c
chn, cn nu gi tr l False th OptionButton khng c chn. V d m lnh sau tng
ng vi vic ngi dng chn OptionButton tn l optDAmoi
optDAmoi.Value=True
6. Hp danh sch (ListBox)
ListBox cho php lit k mt danh sch cc gi tr ngi dng c th quan st v la chn
mt hoc mt vi gi tr trong danh sch ny.
Mi gi tr trong ListBox lun c ch s (Index) v ni dung (Text).
Thuc tnh:
Thuc tnh M t Ghi ch
List Tr v danh sch cc gi tr trong iu khin Tham kho Object
Browser
ListCount Tr v s lng cc gi tr trong danh sch Kiu Long
ListIndex Tr v ch s ca gi tr c chn trong danh
sch
Kiu Variant
Text Tr v ni dung ca gi tr c chn Kiu String
Selected(i) Kim tra xem phn gi tr i c c chn hay
khng.
Kiu Boolean
Phng thc:
Phng thc M t Ghi ch
AddItem Thm mt gi tr vo trong danh sch
RemoveItem Xo mt gi tr khi danh sch
Clear Xo ton b danh sch
Tham kho trong Object
Browser hoc Help
V d: to UserForm vi ListBox nh hnh di:
Hai OptionButton phc v
cho vic la chn loi hnh
d n. Ngi dng ch c
th chn mt trong hai
iu khin ny.



M lnh cho s kin Initialize (s kin ny c t ng gi khi chng trnh np
UserForm vo b nh ca my tnh) ca UserForm nh sau:
Private Sub UserForm_Initialize()
lstDsMc.AddItem "Mat cat dau", 0
lstDsMc.AddItem "Mat cat L/4", 1
lstDsMc.AddItem "Mat cat L/2", 2
lstDsMc.AddItem "Mat cat 3L/4", 3
lstDsMc.AddItem "Mat cat cuoi", 4
End Sub
Phng thc AddItem c hai tham s u l tham s tu chn: tham s th nht l ni
dung ca phn t, tham s th hai l v tr chn phn t trong danh sch.
Kt qu chy chng trnh nh sau:

bit ngi dng la chn phn t no trong ListBox, vit m lnh cho s kin Click ca
ListBox nh sau:
Private Sub lstDsMc_Click()
Hin th gi tr c chn ln tiu ca UserForm
Me.Caption = lstDsMc.Text
End Sub
Kt qu khi ngi dng chn mt gi tr trong ListBox:
UserForm: usfMc
ListBox: lstDsMc
Yu cu: khi chng trnh hot
ng, trong ListBox s c mt
danh sch cc mt ct c
thng k ra.



7. Hp danh sch t hp (ComboBox)
Tng t nh ListBox, nhng danh sch cc gi tr c th hin theo kiu hin ra y khi
ngi dng kch chut vo. Ngoi ra iu khin ny cn cho php ngi dng nhp gi tr cn
tm vo, iu ny gip cho vic la chn c nhanh hn khi ngi dng bit tn gi tr cn
chn trong danh sch v chiu di ca danh sch li qu ln.

Cc thuc tnh v phng thc ca ComboBox tng t nh ListBox.
8. Khung (Frame)
Frame cho php nhm cc iu khin trn UserForm li theo ch , gip cho vic trnh by trn
UserForm c r rng v gip cho ngi dng d s dng chng trnh. Frame cn c dng
tp hp cc OptionButton thnh mt nhm.
Khi to nhm iu khin trong Frame, nn to Frame trc ri mi to cc iu khin thnh
phn trong n (khi cc iu khin to sau s c gn v trong Frame).



9. Hnh nh (Image)
Image cho php hin th hnh nh trn mt vng ca UserForm. S dng iu khin ny gip cho
vic minh ha d liu cn nhp tr nn r rng v d hnh dung.
chn hnh nh vo trong iu khin, s dng thuc tnh Picture ca n.


12. Cc hp thoi thng dng
12.1. Hp thng ip (Message Box MsgBox)
MsgBox c s dng nhc nh, thng bo hoc cnh bo ngi dng. MsgBox c th c
gi theo kiu th tc (khng c gi tr tr v), hoc theo kiu hm (gi tr tr v l nt lnh c
ngi dng chn).
C php gi MsgBox nh sau:
Dng th tc:
Frame nhm cc
iu khin phc
v vic nhp d
liu cho cc
nhm vt liu
khc nhau.


MsgBox Prompt, [Buttons], [Title]
Dng hm
MsgBox(Prompt, [Buttons], [Title])
(Gi tr tr v ca hm c kiu VbMsgBoxResult tham kho trong Object Browser)
Trong :
Prompt: ni dung dng nhc trong MsgBox (kiu String)
Buttons: kiu hin th biu tng v nt lnh trong MsgBox (tham s ny c kiu l
VbMsgBoxStyle tham kho trong Object Browser)
Title: ni dung dng tiu ca MsgBox (kiu String)
V d: MsgBox c gi vi m lnh sau:
MsgBox "Bn c mun thot khi chng trnh khng", vbCritical Or _
vbYesNo, "Thot khi chng trnh"

12.2. Hp nhp d liu (Input Box InputBox)
InputBox c s dng nhm yu cu ngi dng nhp mt chui (String) theo gi ca dng
nhc (Prompt) v tiu (Title) trn . InputBox c gi theo dng hm vi gi tr tr v
l chui d liu m ngi dng nhp.
C php gi InputBox thng thng nh sau:
InputBox(Prompt, [Title], [Default], [XPos], [YPos])
Trong :
Prompt: ni dung dng nhc.
Title: ni dung tiu .
Default: gi tr mc nh ca chui d liu.
XPos, YPos: to gc tri trn ca InputBox khi hin th ra mn hnh.
V d: gi InputBox vi m lnh sau:
Dim LngSodiemMax As Long
LngSodiemMax = _
Val(InputBox("Nhp s lng im ti a (s nguyn dng)", _
"S im ti a", "100000"))
Title
Prompt
Buttons



Nu ngi dng bm nt OK th gi tr tr v ca hm InputBox l mt chui c gi tr
100000, cn nu bm nt Cancel th gi tr tr v l mt chui rng.
12.3. Hp thoi da trn iu khin Common Dialog.
iu khin Common Dialog cho php hin th cc hp thoi sau:
Hp thoi Open, Save: phc v thao tc m v ghi file mt cch trc quan.
Hp thoi Color: phc v thao tc la chn mu.
Hp thoi Font: phc v thao tc la chn font ch.
Hp thoi Print: phc v thao tc in n.
a iu khin ny vo trong hp cng c iu khin (Control Toolbox) chn menu Tools
Additional Controls, sau chn Microsoft Common Dialog Control.

Cc thuc tnh ca iu khin Common Dialog.
Thuc tnh M t Ghi ch
DialogTitle Tiu ca hp thoi Kiu String
FileName Tr v ng dn v tn ca file c chn - Hp
thoi Open, Save.
Kiu String
FileTitle Tr v tn ca file c chn (khng cha ng
dn) - Hp thoi Open, Save.
Kiu String
Filter M t cc kiu file s c hin th trong hp thoi
- Hp thoi Open, Save.
Kiu String


FilterIndex Kiu file mc nh s c hin th trong hp thoi
- Hp thoi Open, Save.
Kiu Integer
DefaultExt Phn m rng mc nh c gn trong hp thoi
(khi ngi dng khng chn m nhp text vo
trong phn tn file) - hp thoi Open, Save.
Kiu String
InitDir ng dn khi to trong hp thoi - Hp thoi
Open, Save
Kiu String
CancelError Qui nh c pht sinh li hay khng khi ngi dng
chn nt Cancel trong hp thoi.
Kiu Boolean
Color Tr v mu c chn trong hp thoi Hp thoi
Color
Tham kho Object
Browser
Cc phng thc ca iu khin Common Dialog.
Phng thc M t Ghi ch
ShowOpen Hin th hp thoi m file (Open)
ShowSave Hin th hp thoi ghi file (Save)
ShowColor Hin th hp thoi chn mu (Color)
ShowFont Hin th hp thoi chn font ch (Font)
ShowPrinter Hin th hp thoi in n (Printer)
Tham kho trong Object
Browser hoc Help
V d: Xy dng UserForm gm cc iu khin nh hnh di:

Yu cu:
Ngi dng bm nt Open Path ly v ng dn ca mt file sau hin th n trn
iu khin lbPath.
Ngi dng chn nt Select Color i mu ca UserForm.
M lnh tham kho nh sau:
M lnh vi th tc s kin Click ca cmdOpen
Private Sub cmdOpen_Click()
Dim strPath As String ' Xau luu tru duong dan cua file duoc chon
Dim strFilter As String ' Xau bieu dien cac kieu file hien thi
strFilter = "App(*.exe)|*.exe|Text(*.txt)|*.txt|All files
(*.*)|*.*"
Label
Name: lbPath
Common Dialog
Name: cmDlg
Command Button
Name: cmdOpen
Command Button
Name: cmdColor


With cmDlg
.DialogTitle = "Chon file"
.InitDir = "C:\Program Files" ' duong dan mac dinh
.Filter = strFilter
.ShowOpen
strPath = .Filename ' lay ve ten day du cua file duoc chon
End With
lbPath.Caption = strPath
End Sub
M lnh vi th tc s kin Click ca cmdColor
Private Sub cmdColor_Click()
Dim lngColor As Long bien luu tru mau duoc chon
With cmDlg
.ShowColor
lngColor = .color lay ve mau nguoi dung chon trong hop thoai
End With
Me.BackColor = lngColor
End Sub

You might also like