57245199 VBA for Excel and Autocad

284
  Lờ i nói đầu Tđộng hóa trong tấ t cl  ĩ nh vc hin đang được  hi quan tâm đặc  bit  bi nh năng suấ t lao động được nâng cao, chấ t lượng sn phẩ m ổ n đị nh  tố t hơn, nhiề u ý tưởng mi  cơ hi trthành hin thc. Tđộng hóa công tác thiế t kế công trình giao thông cũng không nm ngoài quy lut chung đó, hin nay, hầ u hế t các công ty trong l  ĩ nh vc tư vấ n thiế t kế công trình giao thông đề u rấ t chú trng thc hin tđộ ng hóa công tác thiế t kế trong công ty ca mình. Điề u này được thhin  nét trong vic đầ u tư ca các công ty (mua sm máy tính, phầ n mề m  đào to nhân lc) cũng như triể n khai tđộng hóa thiế t kế rấ t nhiề u công trình trong thc tế . Vi sđ a dng ca mình, các  bài toán trong công tác thiế t kế luôn đòi hi slinh hot ca công tác tđộng hóa. Chính  vy, để phầ n nào đáp ng được yêu cầ u cấ p  bách tthc tế sn xuấ t, ni dung cuố n giáo trình này đề cp đế n tấ t ccác vấ n đề cơ  bn nhấ t ca vic thc hin tđộng hóa thiế t kế công trình giao thông cũng như phương pháp để nâng cao mc độ tđộng hóa cho phù hp vi tng yêu cầ u chuyên  bit xuấ t hin trong quá trình thiế t kế . Ni dung ca giáo trình này  sđúc kế t kinh nghim ging dy môn Tđộng hóa thiế t kế cầ u đường cho sinh viên ngành xây dng công trình giao thông  quá trình tham gia thc hin tđộng hóa công tác thiế t kế ngoài sn xuấ t ca các tác gicũng như cp nht mi nhấ t nhng công nghchchố t phc vcho vic tđộ ng hóa. Hơn na, ni dung chính tp trung vào nhng thành phầ n cố t lõi phc vcho mc đích tđộng hóa thiế t kế cầ u đường, cùng vi nhng ni dung mang tính gi m đị nh hướng cho tng chuyên ngành, khiế n cho cuố n giáo trình này hoàn toàn phù hp vi định hướng đào to theo tín chca Nhà trường. Chúng tôi xin chân thành cm ơn sđóng góp ý kiế n ca các đồng nghip trong quá trình hoàn thin cuố n giáo trình này. Vi tố c độ phát triể n rấ t nhanh ca công nghnhư hin nay thì chc chn rng trong thi gian ti, nhiề u vấ n đề liên quan đế n vic thc hin tđộng hóa thiế t kế sphi thay đổ i,  chúng tôi hy vng rng, cùng vi các ý kiế n đóng góp ca  bn đọc  scp nht kiế n thc ca  bn thân, thì lầ n xuấ t  bn sau ca cuố n sách này shoàn thin hơn na, sđáp ứng tố t hơn na yêu cầ u ca  bn đọc.  Ni, ngày 01 tháng 06 năm 2007 Các tác gi. 

Transcript of 57245199 VBA for Excel and Autocad

Li ni uTnghatrongttclnhvchinangcxhiquantmcbitbinhn nngsutlaongcnngcao,chtlngsnphmnnhvtthn,nhiu tngmicchitrthnhhinthc.Tnghacngtcthitkcngtrnhgiao thngcngkhngnmngoiquylutchung,hinnay,huhtcccngtytrong lnhvctvnthitkcngtrnhgiaothngurtchtrngthchintngha cngtcthitktrongcngtycamnh.iunycthhinrnttrongvicu tcacccngty(muasmmytnh,phnmmvotonhnlc)cngnhtrin khaitnghathitkrtnhiucngtrnhtrongthct. Visadngcamnh,ccbitontrongcngtcthitklunihislinhhot cacngtctngha.Chnhvvy,phnnopngcyucucpbch tthctsnxut,nidungcungiotrnhnycpnttcccvncbn nhtcavicthchintnghathitkcngtrnhgiaothngcngnhphng phpnngcaomctnghachophhpvitngyucuchuynbitxut hintrongqutrnhthitk. NidungcagiotrnhnylscktkinhnghimgingdymnTngha thitkcungchosinhvinngnhxydngcngtrnhgiaothngvqutrnh thamgiathchintnghacngtcthitkngoisnxutcacctcgicng nhcpnhtminhtnhngcngnghchchtphcvchovictngha.Hn na,nidungchnhtptrungvonhngthnhphnctliphcvchomccht ng ha thit k cu ng, cng vi nhng ni dung mang tnh gi m v nh hngchotngchuynngnh,khinchocungiotrnhnyhontonphhpvi nhhngototheotnchcaNhtrng. Chngtixinchnthnhcmnsnggpkincaccngnghiptrongqu trnhhonthincungiotrnhny. Vitcphttrinrtnhanhcacngnghnhhinnaythchcchnrngtrong thigianti,nhiuvnlinquannvicthchintnghathitksphi thayi,vchngtihyvngrng,cngvicckinnggpcabncvs cpnhtkinthccabnthn,thlnxutbnsaucacunschnyshonthin hnna,spngtthnnayucucabnc. HNi,ngy01thng06nm2007 Cctcgi.

PHN I: M U .................................................................................. 11.Tngquanvthitkvtnghathitkcngtrnhgiaothng.............................. 1 2.intvccphnmmdngchothitkcngtrnhgiaothng.................................. 3 3.Lachnphnmmdngchothitkcngtrnhgiaothng.......................................... 4 4.Chuynbithaphnmm .................................................................................................... 6 5.Ktchng .............................................................................................................................. 11

PHN II: LP TRNH TRN NG DNG NN ...................................... 12CHNG I: KHI NIM........................................................................................ 12 CHNG II: TNG QUAN V VBA ..................................................................... 191.cimcaVBA.................................................................................................................. 19 2.TrnhtxydngmtdnbngVBA ............................................................................ 19 3.CutrccamtdnVBA................................................................................................ 20 4.MitrngphttrintchhpVBAIDE............................................................................ 21 5.VdutinviVBA.......................................................................................................... 23

CHNG III: C BN V NGN NG LP TRNH VISUAL BASIC ................. 251.Nhngquinhvcphp.................................................................................................. 25 2.Cctrgipvcphptrongqutrnhvitmlnh ...................................................... 25 3.Tnhnngginhvthonthinmlnh ..................................................................... 26 4.TkhotrongVB ................................................................................................................... 27 5.Cckiudliucbn.......................................................................................................... 28 5.1. Kiu logic (boolean).......................................................................................................... 29 5.2. Kiu s nguyn.................................................................................................................. 29 5.3. Kiu s thc....................................................................................................................... 29 5.4. Kiu mng (array) ............................................................................................................. 29 5.5. Kiu chui (String)............................................................................................................ 31 5.6. Kiu thi gian (Date)......................................................................................................... 32 5.7. Kiu Variant ...................................................................................................................... 32 5.8. Kiu t nh ngha (user-defined type).............................................................................. 33 5.9. Kiu lp (Class)................................................................................................................. 34 6.KhaibobintrongVB.......................................................................................................... 35 6.1. Khai bo hng s ............................................................................................................... 38 6.2. Khai bo bin..................................................................................................................... 38 6.3. Khai bo kiu t nh ngha .............................................................................................. 38 6.4. Khai bo mng tnh ........................................................................................................... 39 6.5. Khai bo mng ng.......................................................................................................... 39 6.6. Khai bo, to v lm vic vi bin i tng.................................................................... 40 7.Cctontvhmthngdng ........................................................................................... 40 7.1. Cc ton t......................................................................................................................... 40 7.2. Cc hm ton hc .............................................................................................................. 41 7.3. Cc hm chuyn i d liu .............................................................................................. 41 7.4. Cc hm x l chui.......................................................................................................... 43 8.Cccutrciukhin ......................................................................................................... 44 8.1. Cu trc iu kin.............................................................................................................. 44 8.2. Cu trc la chn .............................................................................................................. 46 8.3. Vng lp xc nh.............................................................................................................. 47

i

8.3.1. Vng lp theo bin m .............................................................................................47 8.3.2. Lp trong mt tp hp................................................................................................49 8.4. Vng lp khng xc nh ...................................................................................................50 9.Chngtrnhcon ................................................................................................................... 51 9.1. Hm (Function) ..................................................................................................................52 9.2. Th tc (Sub) .....................................................................................................................52 9.3. Truyn tham s cho chng trnh con................................................................................52 9.3.1. Truyn tham s theo tham chiu ................................................................................53 9.3.2. Truyn tham s theo tham tr .....................................................................................54 9.3.3. Tham s tu chn.......................................................................................................54 9.3.4. Danh sch tham s vi s lng tham s tu ..........................................................55 9.3.5. Hm c gi tr tr v l kiu mng. ............................................................................55 9.4. Bin trong chng trnh con ..............................................................................................56 9.5. Cch thc gi chng trnh con. ........................................................................................58 9.6. Thot khi chng trnh con..............................................................................................59 10.Tchcccchngtrnhcontheohthngccmunchun .................................. 59 11.LmvicviUserFormvccthnhphniukhin .................................................. 60 11.1. Cc vn chung .............................................................................................................60 11.1.1. To UserForm v cc thnh phn iu khin trong VBA IDE ................................63 11.1.2. Cc thuc tnh ca UserForm v cc thnh phn iu khin. ..................................64 11.1.3. Cc phng thc ca UserForm v cc thnh phn iu khin. ..............................66 11.1.4. Cc s kin trn giao din........................................................................................66 11.1.5. V d.........................................................................................................................67 11.2. Lm vic vi UserForm ...................................................................................................68 11.3. Cc iu khin thng dng...............................................................................................69 12.Cchpthoithngdng................................................................................................... 76 12.1. Hp thng ip (Message Box MsgBox)......................................................................76 12.2. Hp nhp d liu (Input Box InputBox) .......................................................................77 12.3. Hp thoi da trn iu khin Common Dialog. .............................................................78 13.Lptrnhxltptin.......................................................................................................... 80 13.1. Cc hnh thc truy cp tp tin ..........................................................................................81 13.2. X l d liu trong tp tin vi cc hm I/O: ....................................................................82 13.2.1. M tp tin:................................................................................................................82 13.2.2. c d liu t tp tin: ..............................................................................................82 13.2.3. Ghi d liu vo tp tin: ............................................................................................84 13.2.4. ng tp tin..............................................................................................................86 13.3. X l d liu trong tp tin theo m hnh FSO (File System Object) ...............................86 13.3.1. To tp tin mi.........................................................................................................88 13.3.2. M tp tin c thao tc .....................................................................................89 14.GrivbylitrongVBAIDE ........................................................................................ 90 14.1. Phn loi li trong lp trnh..............................................................................................90 14.2. G ri trong lp trnh .......................................................................................................91 14.2.1. Pht hin li lc thc thi ..........................................................................................91 14.2.2. Cc phng php thc thi m lnh ..........................................................................92 14.2.3. Ca s tr gip g ri ..............................................................................................93 14.3. By li trong VBAIDE.....................................................................................................95 14.3.1. Cu lnh On Error....................................................................................................95 14.3.2. i tng Err ...........................................................................................................96 14.3.3. Hm Error ................................................................................................................97

CHNG IV: LP TRNH TRN MICROSOFT EXCEL ....................................... 991.TngquanvMicrosoftExcel .............................................................................................. 99 1.1. Kh nng ca Excel............................................................................................................99 1.2. Giao din ca Excel ...........................................................................................................99 1.3. Kh nng m rng ca Excel ...........................................................................................100 2.Macro ..................................................................................................................................... 100

ii

2.1. Macro l g?..................................................................................................................... 101 2.2. To Macro ....................................................................................................................... 101 2.2.1. To Macro theo kch bn......................................................................................... 101 2.2.2. To Macro s dng VBA ........................................................................................ 104 2.3. Qun l Macro................................................................................................................. 104 2.4. S dng Macro ................................................................................................................ 105 2.4.1. Thc thi Macro bng phm tt ................................................................................. 106 2.4.2. Thc thi Macro thng qua trnh qun l Macro ...................................................... 106 2.4.3. Thc thi Macro trc tip t VBAIDE ..................................................................... 106 2.5. Hiu chnh Macro............................................................................................................ 107 2.6. Vn an ton khi s dng Macro.................................................................................. 107 3.XydnghmmitrongExcel .......................................................................................... 107 3.1. Khi nim v hm trong Excel ........................................................................................ 107 3.2. To hm mi bng VBA ................................................................................................. 108 3.2.1. Ti sao phi dng hm?........................................................................................... 108 3.2.2. Cu trc hm ........................................................................................................... 109 3.2.3. To hm mi ........................................................................................................... 109 3.3. Hm tr v li .................................................................................................................. 111 4.AddinvPhnphiccngdngmrng................................................................... 113 4.1. Khi nim v Add-In ....................................................................................................... 114 4.2. Trnh qun l Add-In....................................................................................................... 114 4.3. To Add-In ...................................................................................................................... 115 4.4. Phn phi v Ci t Add-In ........................................................................................... 117 5.HthngccitngtrongExcel................................................................................... 117 5.1. M hnh i tng trong Excel ....................................................................................... 117 5.2. Mt s i tng c bn trong Excel .............................................................................. 119 5.2.1. i tng Application............................................................................................. 119 5.2.2. i tng Workbook .............................................................................................. 123 5.2.3. i tng Window.................................................................................................. 126 5.2.4. i tng Worksheet .............................................................................................. 128 5.2.5. i tng Range ..................................................................................................... 131 5.2.6. Tp i tng Cells ................................................................................................. 135 6.SkincaccitngtrongExcel............................................................................... 137 6.1. To b x l s kin cho mt s kin ............................................................................. 138 6.2. S kin trong Workbook ................................................................................................. 139 6.3. S kin trong Worksheet ................................................................................................. 141 6.4. S kin trong UserForm .................................................................................................. 143 6.5. S kin khng gn vi i tng .................................................................................... 144 7.CcthaotccbntrongExcel .......................................................................................... 145 7.1. iu khin Excel ............................................................................................................. 146 7.1.1. Thot khi Excel ..................................................................................................... 146 7.1.2. Kho tng tc ngi dng..................................................................................... 147 7.1.3. Thao tc vi ca s ................................................................................................. 147 7.1.4. Khi ng Excel t chng trnh khc ................................................................... 148 7.2. Lm vic vi Workbook.................................................................................................. 150 7.2.1. To mi, m, lu v ng workbook ...................................................................... 150 7.3. Lm vic vi Worksheet ................................................................................................. 151 7.3.1. To mi, xo v i tn worksheet ......................................................................... 151 7.4. Lm vic vi Range v Cells........................................................................................... 152 7.4.1. Duyt qua tng trong vng d liu....................................................................... 152 7.4.2. Duyt qua tng trong vng d liu theo hng v ct ........................................... 152 7.4.3. Vng c cha d liu Thuc tnh UsedRange...................................................... 153 7.5. Lm vic vi biu ....................................................................................................... 153 7.5.1. To mi biu ...................................................................................................... 154 7.5.2. Thm mt chui s liu vo biu c.............................................................. 155 7.6. S dng cc hm c sn trong Excel............................................................................... 157

iii

8.Giaodinngidng.......................................................................................................... 157 8.1. iu khin nhng trong Worksheet .................................................................................157 8.1.1. iu khin Spin Button............................................................................................158 8.1.2. iu khin ComboBox ............................................................................................159 8.1.3. iu khin Command Button ..................................................................................160 8.2. Cc hp thoi thng dng ................................................................................................161 8.2.1. Hp thoi InputBox ca Excel Hm InputBox .....................................................161 8.2.2. Hp thoi Open Hm GetOpenFilename ..............................................................163 8.2.3. Hp thoi Save As Hm GetSaveAsFilename ......................................................165 8.2.4. Hp thoi chn th mc i tng FileDialog ....................................................166 8.2.5. Cc hp thoi mc nh trong Excel Tp i tng Dialogs ................................166 8.2.6. Thc thi mc trnh n Excel t VBA.....................................................................168 8.3. Hp thoi tu bin UserForm........................................................................................169 8.3.1. To mi UserForm...................................................................................................169 8.3.2. Hin th UserForm ...................................................................................................170 8.3.3. Cc iu khin trn UserForm .................................................................................171 8.4. Thao tc trn thanh trnh n ...........................................................................................172 8.4.1. Cu trc ca h thng thanh trnh n .....................................................................173 8.4.2. To trnh n tu bin..............................................................................................174 8.4.3. Xo trnh n tu bin .............................................................................................177 8.4.4. Gn phm tt cho Menu Item ...................................................................................178

CHNG V: LP TRNH TRN AUTOCAD....................................................... 1811.TngquanvAutoCAD ..................................................................................................... 181 1.1. Kh nng ca AutoCAD ..................................................................................................181 1.2. Giao din ca AutoCAD ..................................................................................................182 1.3. Kh nng m rng ca AutoCAD....................................................................................183 2.QunldnVBAtrongAutoCAD ................................................................................ 184 2.1. D n VBA trong AutoCAD............................................................................................184 2.2. Trnh qun l d n VBA.................................................................................................185 2.2.1. To mi, M v Lu d n VBA.............................................................................186 2.2.2. Nhng v tch d n VBA .......................................................................................187 2.3. Qun l d n VBA t dng lnh ....................................................................................188 3.Macro ..................................................................................................................................... 188 3.1. Khi nim Macro trong AutoCAD...................................................................................188 3.2. To mi v Hiu chnh Macro .........................................................................................189 3.3. Thc thi Macro.................................................................................................................190 3.4. nh ngha lnh mi bng AutoLISP...............................................................................191 3.4.1. To d n mi ..........................................................................................................191 3.4.2. To v th nghim Macro HelloWorld....................................................................192 3.4.3. To lnh mi bng AutoLISP ..................................................................................193 4.HthngitngtrongAutoCAD ................................................................................ 193 4.1. M hnh i tng trong AutoCAD.................................................................................193 4.2. Mt s i tng chnh trong AutoCAD .........................................................................195 4.2.1. i tng Application .............................................................................................195 4.2.2. i tng Document................................................................................................196 4.2.3. Tp i tng...........................................................................................................198 4.2.4. i tng phi hnh hc ............................................................................................198 4.2.5. i tng hnh hc ..................................................................................................199 5.CcthaotccbntrongAutoCAD ................................................................................. 200 5.1. iu khin AutoCAD.......................................................................................................200 5.1.1. To mi, M, Lu v ng bn v..........................................................................200 5.1.2. Khi ng v thot khi chng trnh AutoCAD....................................................203 5.1.3. S dng cc lnh sn c ca AutoCAD ...................................................................205 5.1.4. Thu phng mn hnh bn v (zoom) ........................................................................205 5.1.5. Nhp d liu ngi dng t dng lnh ca AutoCAD ............................................207

iv

5.1.6. Thit lp bin h thng............................................................................................ 214 5.2. To mi i tng hnh hc ............................................................................................ 217 5.2.1. Xc nh ni cha i tng ................................................................................... 217 5.2.2. Khai bo v to i tng hnh hc ........................................................................ 218 5.2.3. To i tng Point................................................................................................. 219 5.2.4. To i tng dng ng thng ............................................................................ 220 5.2.5. To i tng dng ng cong ............................................................................. 223 5.2.6. To i tng vn bn............................................................................................. 225 5.3. Lm vic vi i tng SelectionSet .............................................................................. 227 5.3.1. Khai bo v khi to i tng SelectionSet .......................................................... 228 5.3.2. Thm i tng hnh hc vo mt SelectionSet ..................................................... 228 5.3.3. Thao tc vi cc i tng trong SelectionSet........................................................ 234 5.3.4. nh ngha b lc i tng cho SelectionSet ........................................................ 234 5.3.5. Loi b i tng hnh hc ra khi SelectionSet .................................................... 236 5.4. Hiu chnh i tng hnh hc ........................................................................................ 237 5.4.1. Hiu chnh i tng s dng cc phng thc ..................................................... 238 5.4.2. Hiu chnh i tng s dng cc thuc tnh.......................................................... 245 5.4.3. Hiu chnh ng a tuyn ..................................................................................... 249 5.4.4. Hiu chnh vn bn n........................................................................................... 251 5.5. Lm vic vi lp (Layer)................................................................................................. 253 5.5.1. To lp mi ............................................................................................................. 254 5.5.2. Truy xut v thay i tn mt lp c.................................................................. 255 5.5.3. Thit lp lp hin hnh............................................................................................ 255 5.5.4. Thit lp cc ch hin th ca lp....................................................................... 255 5.5.5. Xo lp .................................................................................................................... 257 5.6. Thao tc vi kiu ng Linetype................................................................................ 257 5.6.1. Ti kiu ng vo AutoCAD ................................................................................ 257 5.6.2. Truy xut v i tn kiu ng ............................................................................. 258 5.6.3. Thit lp kiu ng hin hnh............................................................................... 259 5.6.4. Xo kiu ng c.............................................................................................. 259 5.7. Thao tc vi ng kch thc Dimension .................................................................. 259 5.7.1. Kiu ng kch thc DimensionStyle .............................................................. 260 5.7.2. To ng kch thc ............................................................................................. 262 5.7.3. nh dng ng kch thc................................................................................... 267 5.8. Thao tc vi d liu m rng XData............................................................................ 268 5.8.1. Gn d liu m rng ............................................................................................... 268 5.8.2. c d liu m rng ............................................................................................... 269 6.Giaodinngidng .......................................................................................................... 270 6.1. Thao tc vi thanh trnh n ........................................................................................... 270 6.1.1. Cu trc ca h thng thanh trnh n .................................................................... 270 6.1.2. To trnh n ........................................................................................................... 272 6.1.3. Xo thanh trnh n................................................................................................. 274

PHN III: TI LIU THAM KHO...................................................... 276

v

MU

PHN I: M U1. Tng quan v thit k v t ng ha thit k cng trnh giao thngCng 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,

1

GIOTRNHTNGHOTHITKCUNG

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 I-1: T ng ha thit k hnh hc ng t vi Civil 3D 2008

2

MU

Hnh I-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 thngCc 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.

3

GIOTRNHTNGHOTHITKCUNG

Hnh I-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-in1, 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 thngVi 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

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.

4

MU

trin 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 I-4: Tm kim thng tin trn Internet vi Google.com

S dng phin bn dng th min ph ca phn mm t kim chng.

5

GIOTRNHTNGHOTHITKCUNG

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 mmKhi 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 I-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 Addin 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)

6

MU

Hnh I-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 Wizard1) hoc trnh by kt qu.

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.

1

7

GIOTRNHTNGHOTHITKCUNG

Hnh I-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.

8

MU

Hnh I-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.

9

GIOTRNHTNGHOTHITKCUNG

Hnh I-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...

10

MU

Hnh I-10: M rng kh nng cho AutoCAD dng ObjectARX

5. Kt chngNh 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.

11

GIOTRNHTNGHOTHITKCUNG

PHN II: LP TRNH TRN NG DNG NNCHNG I: KHI NIMTrong 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 mun 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 mun 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, v 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.

12

CHNGI:KHINIM

Hnh I-1: Lp bng tnh kt cu mt ng trn Excel

Hnh I-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

13

GIOTRNHTNGHOTHITKCUNG

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 I-3: 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.

14

CHNGI:KHINIM

Hnh I-4: 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 I-5: 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.

15

GIOTRNHTNGHOTHITKCUNG

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. Ktchng 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.

16

CHNGI:KHINIM

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.

17

GIOTRNHTNGHOTHITKCUNG

18

CHNGII:TNGQUANVVBA

CHNG II: TNG QUAN V VBA1. c im ca VBAT 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 COM1, 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 VBAV 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.

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.

1

19

GIOTRNHTNGHOTHITKCUNG

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 VBAKhi ni n cc thnh phn to nn mt d n VBA th cu trc ca n, v tng qut, 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.

20

CHNGII:TNGQUANVVBA

Hnh II-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 IDETrong 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 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.

21

GIOTRNHTNGHOTHITKCUNG

Hnh II-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.GI 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.

22

CHNGII:TNGQUANVVBA

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 VBAV 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 trong d n. 3. Chn tip menu Insert UserForm thm mt hp thoi ngi dng vo

Module thm mt m-un chun vo trong d n.

4. Chn Module1 v son tho m lnh trong m-un nh sau:

23

GIOTRNHTNGHOTHITKCUNGPublic 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

24

CHNGIII:CBNVNGNNGLPTRNHVISUALBASIC

CHNG III: C BN V NGN NG LP TRNH VISUAL BASICTrong 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 phpC 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 lnhCc 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, bng cch chn trnh n Tools Options Editor Code Settings.

Hnh III-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 di y) 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.

25

GIOTRNHTNGHOTHITKCUNG

Hnh III-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.

Hnh III-3: 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 lnhM 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, trong VBAIDE, chn trnh n Tools Options Editor.

Hnh III-4: Bt / tt tr gip hon thin m lnh t ng trong VBA IDE

26

CHNGIII:CBNVNGNNGLPTRNHVISUALBASIC

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 III-5: 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 III-6: 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 ri (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 VBT 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:

27

GIOTRNHTNGHOTHITKCUNGAs Binary ByRef ByVal Date Else Empty Error False For Friend Get Input Is Len Let Lock Me Mid New Next Nothing Null On Option Optional ParamArray Print Private Property Public Resume Seek Set Static Step String Then Time To True WithEvents

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 III-7: VBA IDE bo li do tn bin trng tn vi t kha

5. Cc kiu d liu c bnKhi 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=ax2+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:

28

CHNGIII:CBNVNGNNGLPTRNHVISUALBASIC

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 nguynDng 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 nguynByte Integer Long

s Kch thc1 byte 2 bytes 4 bytes

Phm vi0 n 255 -32,768 n 32,767 -2,147,483,648 n 2,147,483,647

5.3. Kiu s thcDng cha cc gi tr l s thc. Cc kiu s thc thng dng c trnh by trong bng di y: Kiu thcSingle Double Currency

s K.thc Phm vi4 byte 8 bytes 8 bytes T -3.402823E38 n v t 1.401298E-45 n 3.402823E38 -1.401298E-45

-1.79769313486231E308 n -4.94065645841247E-324 v t 4.94065645841247E-324 n 1.79769313486232E308 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.

29

GIOTRNHTNGHOTHITKCUNGGn 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 ctKhai 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:

30

CHNGIII:CBNVNGNNGLPTRNHVISUALBASIC

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 III-8: 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 hnh trn.

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 (216 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

31

GIOTRNHTNGHOTHITKCUNG

Hnh III-9: 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 VariantKiu 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 V = String Gn bin V vi V = 16 Gn bin V vi V = True Gn bin V vi V = #01/06/2007# mt chui mt s gi tr kiu logic mt d liu kiu thi gian

32

CHNGIII:CBNVNGNNGLPTRNHVISUALBASIC

S dng hm VarType(vVariant) s cho ta m ca kiu d liu hin ang lu tr trong bin Variant. Gi tr VarType 0-vbEmpty 1-vbNull 2-vbInteger 4-vbSingle 7-vbDate 8-vbString 9-vbObject 11-vbBoolean Ch thchKhng c g trong variant Khng c d liu hp l trong variant Variant cha Integer Variant cha Single Variant cha Date/Time Variant cha String Variant cha mt Object 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 TrM STT DT DG DD H V MT nghaS hiu trm t my Th t ca im o S c dy trn S c dy gia S c dy di Gc bng Gc ng M t c im ca im o

Kiu gi trInteger Integer Double Double Double Double Double 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

33

GIOTRNHTNGHOTHITKCUNG

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).

34

CHNGIII:CBNVNGNNGLPTRNHVISUALBASIC

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 bin trong VBTrong 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 III-10: Phm vi s dng ca bin c khai bo trong chng trnh con

Nu bin c khai bo cp m-un v bin c khai bo trong chng trnh con c tn trng nhau th bn trong chng trnh con, bin c s dng l bin c khai bo bn trong n. Ta xt v d sau:Option Explicit Dim a As Double, b As Double Public Sub Test1() a = 100 : b = 200 End Sub Public Sub Test2() Dim a As Double, c As Double Test1 c = a + b Debug.Print "a = "; a; Debug.Print "b = "; b;

35

GIOTRNHTNGHOTHITKCUNGDebug.Print "c = "; c; End Sub

Bin a v b c khai bo cp m-un, ngha l mi chng trnh con trong m-un ny u c th s dng v tc ng ln chng. Gi tr ca a v b c gn trong chng trnh con Test1. Trong chng trnh con Test2 mt bin a khc c khai bo (trng tn vi bin a ca mun), v gi tr khi to ca n bng 0. Kt qu chy chng trnh con Test2 nh sau:

Hnh III-11: Mc u tin trong s dng bin

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 III-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 (multiprojects), 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.

36

CHNGIII:CBNVNGNNGLPTRNHVISUALBASIC

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 III-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 III-14: Phm vi s dng ca bin tng ng vi t kha Public v Private. CH 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).CH 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. Khng c gii hn v kch thc cho phn ny.

37

GIOTRNHTNGHOTHITKCUNG

Hnh III-15: Phn General trong m-un

6.1. Khai bo hng sHng 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 =

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 binC php:Dim as

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 as

Hay:Private as

6.3. Khai bo kiu t nh nghaTrong VB c th khai bo cc kiu d liu theo nhu cu ca ngi s dng. C php khai bo nh sau:

38

CHNGIII:CBNVNGNNGLPTRNHVISUALBASIC Type as as as 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 c thay bng . truy cp ti mt trng ca bin kiu bn ghi, dng ton t (.) hoc dng cp t kha With End With.CH 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 tnhC php:[Public/Private/Dim] () as

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.GI 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 ngC php:[Public/ Private/ Dim] () as

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:

39

GIOTRNHTNGHOTHITKCUNG Redim () as

Ch rng 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 tngKhai bo v to bin i tng phi dng thm t kha NewDim as New l lp (class) c nh ngha t trc.

Php gn i tng c thc hin vi t kha SetSet =

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 as Set = New 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:. .

7. Cc ton t v hm thng dng7.1. Cc ton tTon 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 tTon t gn = + Gn gi tr cho bin hoc thuc tnh Cng Ton t ton hc

M t

40

CHNGIII:CBNVNGNNGLPTRNHVISUALBASIC* / \ Mod ^ Ton t logic Not And Or Xor Eqv = > >= < B Then Debug.Print ("Hieu cua hai so A va B >0")

Kt qu nh sau:

GI 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 tr v gi tr False (sai). gii quyt tnh hung ny ta s dng cu trc iu kin m rng nh sau:If Khi_lnh_1 Else Khi_lnh_2 End If

44

CHNGIII:CBNVNGNNGLPTRNHVISUALBASIC

Din gii tin trnh ca cu trc lnh ny nh sau: nu l ng th chng trnh s thc hin , cn nu khng ng th chng trnh s thc hin . S khi ca cu trc lnh kiu ny c th c biu din nh sau:

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 Then [Khi_lnh_1] [ElseIf Then [khi_lnh_n] ... [Else [Khi_lnh_2]] End If

Trong khi cu trc ny, khi lnh [ElseIf Then c th lp li nhiu ln tng ng vi nhiu iu kin khc nhau. Din gii cu trc ny nh sau: nu 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 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

45

GIOTRNHTNGHOTHITKCUNG

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. 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 chnCu 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 [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 s c so snh vi cc nu gi tr ca tho mn th tng ng s c thc hin, sau chng trnh s thot khi cu trc la chn. Trong trng hp gi tr ca khng tho mn tt c cc iu kin th 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

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:

46

CHNGIII:CBNVNGNNGLPTRNHVISUALBASIC

8.3. Vng lp xc nh8.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 = To [Step ] [Khi_lnh] Next []

Cu trc lp ny thc hin theo trnh t sau: Gn bng gi tr So snh vi gi tr : Nu nh hn hoc bng: thc hin cc lnh bn trong [Khi_lnh] v t ng cng vo mt gi tr bng nu c t kha Step, cn khng th cng thm 1 v quay li bc so snh vi gi tr . 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 Tong = Tong + i Next Debug.Print ("Tong = " & Tong)

Kt qu nh sau:

47

GIOTRNHTNGHOTHITKCUNG

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 l m ( 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 In [Khi_lnh] Next

Gii thch: s nhn cc gi tr t phn t u tin n phn t cui cng trong . ng vi mi gi tr ca , khi lnh c thc hin mt ln.CH Kiu ca trong vng lp (For Each Next) s ph thuc vo kiu ca m n duyt qua l kiu mng hay kiu tp i tng. i vi l tp i tng th kiu d liu ca c th l Variant, hoc i tng cng kiu vi tp i tng . i vi l mng th kiu d liu ca 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 Deb