You are on page 1of 492
at TAS. PHAN TL HUONG PHAN TU HUONG Lap Trinh (In tai ban) NHA XUAT BAN THONG KE HA NOI, nam 2009 LOI NOI DAU Hién nay, phan mém Excel da tré nén thin thuge doi v6i nhiing nguoi throng xuyén lam viée véi bang tinh va biéu dé. Kha néing tinh todn, phan lich va xtt by dit liéu tuyét voi cia phan mém Excel co thé gitp ching ta gidi quyét duoc nhiéu loai cong viée khae nhau. Dé c6 nhiéu sich tiéng Viét huéng dan ste dung phan mém Excel tit co ban dén nang cao, tng dung tir nganh ky thudi dén linh vue kinh té. Tuy nhién, phan lon sach dé chi huéng dan khai thie cde céng cu va chite nding sén cb trong phan mém Excel Véi doi hoi ciia cong vie ngay cdng cao thi vide str dung cong cu va chite Excel nhié ting duoc. May man thay, Microsoft da hé tre ngon ngit lap trinh Visual Basic nding san co trong phan mé Khirat khé khan hodc khong thé dap for Applications (goi tat la VBA) tich hop trong phin mém Excel (cling voi cdc phan mém khéc trong goi Office). La ngén ngit lap winh Visual Basic (VB) phd trién trong ting dung, VBA dé gitip phan mém Excel cé kha nding tw? bién cao, vugt ra khoi gigi han bang tinh thong thcéng. Sue dung VBA ciing voi cdc cel gitip ching ta c6 thé gidi quyét duoc cong cu sén cé trong phan mém E: nhiéu bai todn phite tap voi khé nang we dong héa cao, sin phdm c6 thé trong duong voi cac phan mém chuyén dung. Ngon ngit VBA rat gan gi voi VB, trong khi dé VB ld ngén ngit dugc stv dung pho bién & Viét Nam ciing nhu toan thé gidi vi dé str dung va nguén sach v6, tai liéu phong phi. Mot sé trudng dai hoc trén thé gibi d& dua VBA vaio gidng day chinh thitc. Con tai Viée Nam, nhiéu ngwdi cing rat quan tam dén ngén ngit nay, dic biét la nhing nguéi lam viéc trong linh virc dia chat, khai théc mo, xdy dung, giao théng, thuy loi, tai chinh, ké todn, kinh té,... Hién nay, Trudng Dai hoc’ M6 Bia chat, Tru ing Dai hoc Giao thong van tai, Trudng Dai hoc Xay dung aa dia ngén ngit VBA vio gidng day trong mot s6 chuyén nganh. Hon nita, khi ném duoc VBA trong Excel, ban cé thé dé dang nam bat VBA trong AutoCad, day la mét phan mém chuyén vé linh vic dé hoa rat ndi tiéng thong duoc str dung trong cde ngdnh k¥ thudt. Tuy nhién, sach hudng dan ste dung VBA bang tiéng Viet thi rat hiém hode chi duge dé cdp rét han ché trong cdc tai liéu c6 lién quan. Vi vay, cudn sdch nay hy vong dap tmg mot phan nhu cdu cia nhiing ai quan tam dén ngon ngit VBA noi chung va tng dung trong Excel noi riéng. 3 wa Adi, b6 sung cho phi hop Trong lan tai ban nay, cudn sdch da duge. ode duoc trinh bay lai cho hop ly nham giip ban va dé hiéu hon. M6t sé doan doc de dang tiép cdn hon voi ctra 56 lim viée ctia VBA Toi xin cam on cdc thanh vién trong dién dan www.giaiphapexcel.com va dac biét la Ban quan tri da gop y, cung cap nhiéu kién thie cling nhue cic stin pham ting dung cita VBA dé cudn sdch duoc hoan thién. Téi cting xin gui [oi cam on dén cc anh Lé Vin Duyét (Cong ty TNHH Dunlopillo - TRH6 Chi Minh), Nguyén Duy Tudn (Truong Dai hoc Cong nghiép Ha Noi), Bao Viet ng ty CO phan Du lich va Thong mai Vinpearl - Nha Trang), n Xay dung Dat cing - Hai Phong)... da tan Cuong (C Neguyén Van Son (Cong ty Cé ph tinh gitip dé toi hodn thanh cubn séch nay. Tac gid MUC LUC Chuwong 1: GIGI THIEU VE VISUAL BASIC FOR APPLICATIONS Chuong 2: GHI VA THUC HIEN MACRO g chite ning Recorder Macro 2.1- Tao macro 2.2- Thue hién macro khi sir dung bang dieu khién macro 2.3- Thue hién macro khi sit dung phim tat (shortcut key) 2.4- Tam ding khi thuc hign macro Chwong 3: CACH THUC HIEN MOT MACRO DON GIAN 3.1- Thuc hién macro tit mét ddi trong trong worksheet 3.2- Thy hién macro tir nétt [enh trong thanh céng cu 3.3- Thue hign macro ttt thanh menu 3.4- Thay ddi lya chon trong macro Chuong 4: CUA SO VISUAL BASIC EDITOR (VBE) 4.1- Cau tric cira sé VBE 4.2- Ctra sé soan thio code (Code window) 4.3- Cita $6 Immediate 4.4- Hiéu chinh trong VBE 4.4.1- Thay di tén cita tht tue 4.4.2- Stra di ma lénh trong thit tuc 4.4.3- Tao thém Module trong cira sé VBE 4.4.4- Go bo module Chuong 5: LAM VIEC VGI FILE EXCEL CO CHUA MACRO 5.1- Sir dung chite nang Security 5.2- Sir dung cée chuong trinh diét virus 5 Chuong 6: UU, NHUQC DIEM CUA CHUC NANG TU GHIMACRO 6.1-Uu diém cia chite nang tu ghi macro 6.2- Nhuge diém ctia chtre nang tu ghi macro Chwong 7: NGON NGU VISUAL BASIC FOR APPLICATIONS 7.1- Cac déi tong (Objects) 7.2- Cac phurong thtre (Methods) 7.3- Cac thudc tinh (Properties) Chuong 8: MOT SO BOI TUONG CO BAN TRONG EXCEL 8.1- D6i tugng Application 8.1.1- Thudc tinh Calculation 8.1.2- Thudc tinh ScreenUpdating 8.1.3- Thudc tinh DisplayAlerts 8.2- Déi tuong Window 8.3- Dai trong Workbook 8.4- Déi tugng Worksheet 8.4.1- Xdc dinh cde théng tin trong Worksheet 8.4.2- Nhap dit ligu vao trong Worksheet 8.4.3- Diéu khién Worksheet 8.5- Déi tung 6 (cell) va khdi 6 (range) 8.5.1- Thuéc tinh Range 8,5.2- Thudc tinh Selection 8,5.3- Thudc tinh Cells 8.5.4- Thudc tinh Offset 8.5.5- Thudc tinh Rows va Columns 8.5.6- Cac kiéu thude tinh khac trong tham chiéu a 8.5.7- Xac dinh théng sé ctia 6 va khdi 6 85 8.5.8- Tao ving truc tiép (khéng str dung VBA) 86 8.5.9- Tao ving bang cach str dung VBA 87 8.5.10- Lam viéc v6i nhiéu ving 87 8.5.11- Di chayén, sao chép va xoa 6 (khdi 6) 88 8.5.12- Mot sé thude tinh hifu ich ciia déi trong Range 89 8.6- Tra cru va tham khao ddi trong 93 Chwong 9: KHAL BAO VA SU DUNG BIEN TRONG VBA 96 9.1- Khai bao kiéu gia tri cho bién 97 9.2- Cac todn tr trong VBA 99 9.3- Biéu thite 101 9.4- Gan gid tri cho bién, hang va déi trong 101 9.4.1- Gan gia tri cho bién 101 9.4.2- Gan gia tri 1 hing s6 cho bién 104 9.4.3- Gan gid tri cho bién déi tung 104 9.4.4- Huéng dan truyén tham sé bang gia tri 106 9.5- Khai béo va sir dung mang (Array) 109 9.5.1- Mang cé kich thuéc cé dinh 109 9.5.2- Mang dng Wd 9.6- Sir dung Type dé khai bao bién ngudi ding 112 9.7- Xac dinh kiéu bién bang ham TypeName 14 9.8- Vong doi cia bién 117 Chuong 10: SU DUNG TRG GIUP TRONG VBA 18 10.1- Tro gitip truc tiép trong mi truong VBA 18 10.2- Str dung hép thoai tro gitp voi chu dé 119 7 Be 10.3- Str dung vi du mau ctia Excel 10.4- Str dung Internet Chuong 11: THIET LAP MOI TRUGNG LAM ViEC 11.1- Str dung Options 11.2- Str dung VBA Project Chuong 12: PHUONG PHAP TU XAY DUNG MACRO 12.1- Xay dung macro 12.2- Ngat dong khi ma lénh qua dai 12.3- Cac Idi xdy ra khi xay dung macro Chuong 13: SU DUNG VA XAY DUNG HAM TRONG VBA 13.1- Str dung cac ham sn c6 trong Excel 13.1.1- Goi cdc ham trong Worksheet tir VBA 13.1.2- Chén ham s6 trong Worksheet yao 6 13.2. Str dung cac ham trong VBA 13.2.1- Ham todn hoc | 13.2.2- Ham xa nhan dit ligu 13.2.3- Ham chuyén ddi gitta cae kiéu dit ligu 13.2.4- Ham vé xir ly chudi 13.2.5- Ham dinh dang dit ligu 13.2.6- Ham tao sé ngdu nhién 13.2.7- Ham vé ngay gi 13.2.8- Ham vé dé hoa 13.2.9- Ham chuong trinh 13.2.10- Cac ham khac 13.3- Xay dung ham trong VBA 165 13.3.1- Phan bigt ham ty lap véi thi tac 165 13.3.2- Cach xay dung ham 165 13.3.3- M6 ta ndi dung ham 169 13.3.4- Tao va sit dung ham trong Add-Ins 170 13.3.5- Goi ham tit thi tuc 176 Chuong 14: CAU TRUC DIEU KHIEN 178 14.1- Diéu khién c6 didu kign 178 14.1.1- Diéu khién IF 178 14.1.2- Diéu khién Select Case 180 14.1,3- Diéu khién And 182 14.1.4- Diéu khién Or 182 14.1.5- Diéu khién sir dung nhiéu And va Or 183 14.2- Diéu khién vong lip 185 14.2.1- Diéu khién Do ... Loop 185 14.2.2- Diéu khién Do While ... Loop 186 14.2.3- Diéu khién Do ... Loop While 186 14.2.4- Diéu khién Do Until ... Loop: 187 14.2.5- Diéu khién Do ... Loop Until 187 14.2.6- Diéu khién For .., Next 189 14.2.7- Diéu khién For Each... Next 190 14.2.8- Lénh thoat (Exit) 190 14.2.9- Vong lap Iéng 191 14.2.10- Diéu khién With - End With 192 Chuong 15: HOP THOAI TRONG VBA 15.1- H6p thong bao Message box (Msg Box) 1.1- Céc loai théng digp trong buttons 15.1.2- Théng s6 cia nut diéu khién 15.1.3- Cac biéu tuong théng diép trong Msgbox 15.1.4- Xay dung tham sé cho MsgBox 15.2- Phuong thitc InputBox 15.3- Ham InputBox Chuong 16: KY THUAT XU LY LOI 16.1- Cac kiéu 16i thuong gap 16.2- Léi thi hanh va cach xir ly 18i 16.2.1- Xéc dinh va lam viée voi nhiing 18i xay ra 16.2.2- Cach “bay” Idi chi tiét bing On Error 16.2.3- Goi gon xir ly Ii 16.2.4- Nhiing truéng hop nén b6 qua 16 16.2.5- Xdc dinh Idi cu thé 16.2.6- Léi do ngudi sir dung cé ¥ 16.3- L6i lap trinh va ky thuat xir ly 16i 16.3.1- Cac loai 16i lap trinh 16,3.2- Xée dinh 1di va ky thuat xir ly 15% 16,3.3- Str dung cdng cy sita 16i cia VBA (VBA Debugger) 16.4- Cac phuong phap giam Idi 16.5- Nhiing théng s6 vé ma lénh 13i trong VBA Chwong 17: LAP TRINH SU KIEN TRONG EXCEL 2003 17.1- Chi dan vé cdc thi tuc cla su kién 17.2- Lam hitu hiéu va v6 hiéu cde su kién 194 194 195 195 195 196 197 200 17.3- Trinh ty cdc su kién 17.4- Cac sy kign d6i voi Workbook 17.4.1- Su kién Activate 17.4.2- Sy kién Deactivate 17.4.3- Su kién Open 17.4.4- Su kién BeforeSave 17.4.5- Su kién BeforePrint 17.4.6- Su kién BeforeClose 17.4.7- Su kién NewSheet 17.4.8- Su kién WindowActivate 17.4.9- Su kién WindowDeactivate 17.4.10- Su kién WindowResize 17.5- Cae su kign déi voi Worksheet 17.5.1- Su kién Activate 17.5.2- Su kién Deactivate 17.5.3- Su kién SelectionChange 17.5.4- Su kién Change 17.5.5- Sw kién Calculate 17.5.6- Sur kign BeforeDoubleClick 17.5.7- Su kién BeforeRightDoubleClick 17.5.8- Sy kién FollowHyperlink 17.5.9- Su kign PivotTableUpdate 17.6- Nhitng sy kign khong lién quan véi cac déi tugng 17.6.1- Su kigén OnTime 17.6.2- Su kién Keypress (bam phim) 231 231 231 232 233 244 246 Chwong 18: NHUNG Vi DU VE LAP TRINH VBA 18.1- Vi du vé lim viée véi ving 18.1.1- Sao chép ving dic biét 18.1.2- Sao chép ving chua xac dinh 18.1.3- Di chuyén ving 18.1.4- Duyét ting 6 trong viing xac dinh 18.1.5- Thu tye dé xoa dong tréng 18.2- Thi du vé Lim viée voi workbook va worksheet 18.2.1- Tha tuc xoa sheet rong 18.2.2--Thii tuc tim sheet trong workbook 18.2.3- Di chuyén nhanh ti mét sheet nao do 18.2.4- Khoa 6 chira c6ng thite 18.3- Thay d6i cai dat trong Excel 18.3.1- Thay déi cai dat kiéu Boolean 18.3.2- Thay déi cai dt khong phai 6 kiéu Boolean 18.4- M@t so ham va thi: tuc hitu dung khac 18.4.1- Ham chuyén sé sang chit 18.4.2- Ham tach sé tir trong chudi 18.4.3- Ham vé tinh toan goc 18.4.4- Tha tuc sao chép dit ligu theo kiéu dae biét 18.4.5- Ham ndi suy tuyén tinh 18.4.6- Ham tach tén, ho va tén dém 18.4.7- Sir dung Validation dong Chwong 19: SU DUNG VA XAY DUNG BANG DIEU KHIEN TRONG EXCEL 19.1- Str dung bang diéu khién sn co trong Excel (Dialog Boxes) 19.1.1- Bang diéu khién File Open va File Save As 12 248 255 256 258 260 260 261 262 262 276 277 279 282 285 288 291 295 300 19.1.2- Phuong thtte GetOpenFile va GetSaveAsFilename 19.2- Xay dung UserForm trong VBE 19.2.1- Cach lam hién UserForm trong bang tinh 19.2.2- Mé6 ta cdc diéu khién trong UserForm 19,2,3- Cac céng cu tao UserForm 19.2.4- M6t s6 thude tinh ca céc didu khién 19,2.5- Str dung chudt phai tai UserForm 19.2.6- Str dung chudt phai tai cdc diéu khién 19.2.7- Cac su kién trong UserForm va diéu khién 19.2.8- Quy ude vé dat tén cho diéu khién trong UserForm 19.2.9- Vi du vé xay dung UserForm 19.3- Xay dung DialogSheet trong workbook 19.3.1- Ca ch lim hién va déng DialogShect trong bang tinh 19.3.2. Cac diéu khién trong DialogSheet 19.3.3- Thuge tinh ctia cae diéu khién trong DialogSheet 19.3.4- Str dung ham Excel dé lién két gitta DialogSheet véi Worksheet dung VBA dé lién két gitta DialogSheet v6i Worksheet 19.3.5. 19.4- Xay dung Form trong WorkSheet Chuong 20: TAO THANH CONG CU VA THUC BON BANG VBA 20.1- Tao thanh céng cy Toolbar 20.1.1- Tao thank céng cu (Toolbar) mdi 20.1.2- Xoa thanh céng cy 20.1.3- Str dung ac diéu khién trong CommandBar 20.1.4- Thém cdc diéu khién vo CommandBar 13, 364 365 367 377 378 382 20.1.5- Sir dung cae thugc tinh ctia diéu khién 400 20.1.6- St dung cac phurong thire 404 20.2- Tao thuc don Menu 406 20.2.1- Lap trinh voi menu 408 20.2.2- Tao thue don con (Submenu) 4tl 20.2.3- Thay di trong thc don tit 413 20.2.4- Tao Popup menu mdi cla déi tuong 6 hay khdi 6 417 Chuong 21: LAM VIEC VO1 FILE VA THU’ MUC VOI VBA 418 21.1- Tim tén cia thy muc hién tai (ham CurDir) 418 21.2- Thay doi tén ctia file hoac thu muc (ham Name) 419 21.3- Kiém tra vi tri ctia file va thu muc trong 6 dia (ham Dir) 421 21.4- Xdc dinh ngay va thoi gian sita déi file (ham FileDateTime) 424 21.5- Xée dinh kich c@ cia file (ham FileLen) 425 21.6- XAc dinh va thiét lap thudc tinh ciia file (ham GetAttr va SetAttr) 426 21.7- Thay ddi thiét lap thu muc va 6 dia (Iénh ChDir va ChDrive) 427 21.8- Tao va xod thur muc (Iénh MkDir va RmDir) 428 21.9- Sao chép file (Iénh FileCopy) 429 21.10- Xod file (Iénh Kill) 431 21.11- Mt sé ham hitu ich cua file va thu muc 431 21.11.1- Ham kiém tra su ton tai cita file 432 21.11.2- Ham tach tén file tir duong din 432 21.11.3- Ham kiém tra sy t6n tai cia dudng dan 432 21.11.4- Ham kiém tra sy tn tai Tén cha mét khong 433 14, 21.11.5- Ham kiém tra sheet cé ton tai hay khéng 21.11.6- Ham kiém tra Workbook cé mé hay khong Chuong 22: NHUNG CAU HOI HAY GAP TRONG VBA Chuong 23: pIEU KHIEN CAC CHUGNG TRINH KHAG BANG VBA 23.1- Khoi d6ng mt chuong trinh khdc tir Excel 23.2- Di chuyén giita cae churong trinh ting dung 23.3- Didu khién cde chuong trinh khac 23.4: Tim hiéu vé lién két (Binding) n két mudn, 23.4.2- Lién két som 23.5- Tao cdc déi tuong Automation 23.5.1- Str dung ham CreateObject 23.5.2- Sir dung ham GetObject 23.5.3- Str dung tir khoa New 23.6- Lién két dir liu giita cae churong trinh trong Window 23.6.1- Diéu khién Word tir Excel 23.6.2- Diéu khién PowerPoint tir Excel 23.6.3- Diéu khién AutoCad tir Excel Chwong 24: LIEN KET GIUA EXCEL VOI VISUAL BASIC 6.0 24.1- Tao du an ActiveX DLL 24.1.1- Cach tao lién két don gian ActiveX DLL mét hudng 24.1.2- CAch tao lién két hoan thign ActiveX DLL hai huéng 24.1.3- Hién thi Form cia VB 6.0 trong Excel 24.2- Diéu khién Excel tir Standard EXE ciia VB 6.0 ‘Tai ligu tham khao 444 445 448 450 451 453 454 454 455 456 456 461 470 471 473 478 482 487 Chuong 1 Gid] THIEU VE VISUAL BASIC FOR APPLICATIONS Nhw ching ta da biét, Microsoft Excel (Excel) la phan mém néi tiéng chuyén vé bang tinh va biéu dé cla tap doan Microsoft. Phan mém Excel duoc st dung rat rong rai va cé thé Ging dyng trong nhiéu nganh nghé. Tuy nhién, déi vei nhiing yéu cau tinh toan, xt ly phtre tap, néu chi don thuan str dung phép tinh trong Excel thi khéng thé giai quyét duoc triét dé, hay phai ton nhidu cong thir xay dying hoac bat budc phai thao tac mot cach tht céng. Dé khac phuc nhiing mat han ché do, ng6n ngir lap trinh c6 tén Visual Basic for Applications (VBA) dug tich hop san trong phan mém Excel sé gitip ban co thé gidi quyét triét dé van dé trén. VBA la ng6n ngir lap trinh phat trién trong mdi trvong Office bai tap doan Microsoft. Cac phan mém Excel, Word, Access, PowerPoint,... va cd phan mém chuyén Iinh vue dé hoa... AutoCad (tir phién ban 2000 tré Ién) déu co thé str dung VBA. Tw lic ban dau, ban co thé stv dung macro trong Excel 3 (ra déi nam 1990), Excel 4 (ra doi nam 1992), Excel 5 (ra doi nam 1994). Khi do, macro dugc viét bang ngén ngi? XLM va la mat phan trong bang tinh Excel, kha nang Ung dung con han ché. Excel 98 (ra doi nam 1997) da danh dau sy phat trién ctia macro bang viéc xay dung ng6n ngé lap trinh Weng dung Visual Basic voi clra sd Microsft Visual Basic hoan toan déc lap. Excel phién ban trvoc khéng m@ duoc phién ban nay. Cho dén nay, ngén ngir VBA da co nhirng buéc phat trién vugt bac voi mét s6 kha nang khong thua kém nhiéu so voi ngudi anh em Visual Basic 6.0 (VB). Mac du, b6 Office 2007 da xuat hién trén thi trong voi giao dién va mét sé tinh nang co sy thay déi, nhung cau trac ngon ngi cling nhu giao dién cla VBA van tuong ty nhu trong Office 2003. Macro (con goi la tht tuc hay chuong trinh con) la mét thanh phan cla ngén ngt? VBA, duoc tao ra dé Excel thyc hién theo yéu cau bdi cac cau \énh cha trong no dé hoan thanh mét cong viéc nao dé. Cac cau lénh trong macro duoc xay dung tir cac ky ty go phim dé ty déng thyc hién cac céng viéc mang tinh lp di lap lai hoc tang téc do cho viée nhap, xtr ly sé liu. 17 “RE WoAProject (Gcokt) a raseft Excel Obj eadcolr— Cestanoa00 | ie ere 0 FnBerders = Imcyeat rewbuffer —3c00)___¥ Hinh 1-1: Cia s6 Microsoft Visual Basic trong Excel VBA gitip chung ta thu hin cac céng viéc trong Excel nhanh hon rat nhiéu so véi tinh toan tha C6ng, C6 thé gidi duge nhiing bai toan phiec tap trong nhiéu link vue. Cac céng viée trong Excel cé stv dung dén VBA thi téc 6 xt ly dik li@u va d6 chinh xdc cao, sdn pham ung dung mang tinh chuyén nghiép. VBA cé hai tng dung chinh 1a th tuc (Sub - con goi la chuong trinh con) va ham ty lap (Function) La ng6n ngé lap trinh ung dung trong mdi truéng Office nén VBA tan dung duoc phan nén la bang tinh trong Excel. Vi vay, ban khéng can phai thiét ké hay phai giao dién tt ban dau nhu cac phan mém chuyén vd lap trinh. Mat khac, VBA san cé & bén trong Excel nén khi ban cai dat Office trong Window, VBA sé tu déng duoc cai kem theo. Bé la nhiing loi thé khi st dung VBA. Ngoai nhéing uu diém thi VBA cing tan tai M6t sé nhuoc diém hu: tinh bao mat kém, khéng bién dich thanh file chuong trinh dé hoat déng déc lap ma phai di kém cting voi file trong Excel,... Ngoai ra, mot sé chung trinh diét virus trong nudc khéng phan biét duoc macro voi virus nén dé bi xoa mat macro khi quét virus. Dé hoc duoc ngén gi lap trinh VBA, ban can ndm duge kién thtre co ban va ndm bat duoc cac déi twong, phuong thtvc lam viéc trong Exce! Nhiing ngudi biét lap trinh VBA trong Excel co thé phat trién theo nhiéu dinh huéng khac nhau nhu lap trinh VB6.0, VB.NET, lp trinh &ng dung VBA trong cac phan mém khac cilia Office va ca phan mém chuyén dé hoa AutoCad, hay bat ctr phan mém tng dung nao cé lién quan dén Visual Basic. Cac inh vue ky thuat, kinh té, tai chinh,... déu co thé ng dung ngén ng VBA trong chuyén mén ctia minh. Chuong 2 GHEVA THUC HIEN MACRO St dung chtre nang ty ghi macro (Recorder Macro) la mét y tuéng hay dé tung bu@c hoc ngén ngi? VBA, nhat la lic dau tim hidu va VBA V6i chtrc nang nay, Excel sé ghi lai toan bé cdc céng viéc ban da thuc hién trén bang tinh (bang cdc ky ty duoc go tir ban phim) mé6t cach tuan tw va khi dé, ban co thé nam bat due qua trinh thyc hién cdng viée nho viée chay (thi hanh) macro bdi cac cau lénh trong macro dé _ Protection Macro 100% Macros... AIEEE | a Options... Security... |. Visual Basic Editor AIF LL OF Microsoft Script Editor —Alte-Shift4F11 Hinh 2-4: Thuc hign ghi macro Macro name: |Macro3 Shortcut key: Store macro in: Ctrl This Workbook Description: | Macro recorded 10/21/2006 by Phan Ty Huéng| Ll 20 Trong suét thoi gian ghi, macro da dug luu lai voi tén xac dinh trong module, module dug tao ra trong qua trinh ghi va la mét phan cla Workbook. Macro dug ghi lai cé thé dugc Iuu trong This Workbook (Workbook hién hanh), New Workbook (Workbook moi) hoac trong Personal Macro Workbook (nhéng macro s@ hitu riéng). Nhéng macro dug Iu trong Personal.xls déu ste dung direc khi ban mo Excel ra. Cac macro trong cac Workbook khac nhau co thé stv dung bat ctv lic nao khi cdc Workbook dang mo (ké ca stv dung chting tty Workbook khac). Didu kién dé co thé thuc hién ghi macro: 4. Trén workbook dang duc kich hoat (Activate Workbook). 2. Trén workbook mdi Chire nang nay chi khéng thu'c hién khi ban dteng ghi. Chive nang ty ghi khdng cé tac dung déi voi mét sé céng viéc. Vi du: nh trong qua trinh ghi macro, mét 6 dugc chon (select) & hién tai sé khéng duoc ghi lai cac hanh d6ng xay ra véi né khi ban khéng thu’c hién cong viéc trong 6 dé. Ngoai ra, Excel cling khong ghi lai céc céng viéc khi dang str dung bang diéu khién (dialog box) cho dén khi ban bam nut OK trén bang diéu khién do. Dé hiéu rS hon thi ban hay thuc hanh céng viéc ghi macro nhu & duoi day: 2.1- Tao macro bang chtrc nang Recorder Macro Ban hay tién hanh tao macro dau tién bang chtrc nang ty ghi macro. NGi dung macro nay trinh bay tén va dja chi cia ban, cach thyc hién nhu sau 1. Trong Tools/Macro, chon Record New Macro (hinh 2-1). 2. Trong Macro name: gd Address_abs dé dat ten macro dé (hinh 2-2). Dac diém la ky ty dau tién la ctia ten macro phai la chi khong cé ddu (co nghia khOng phai la ché tiéng Viet). Con cac ky tu khac cé thé la chit, sé hoac ky tw gach dui (ky tu _). Cac ky ty daic biét nhu khoang tréng (Space), @, %, §, #, &,... khong duoc chap nhan, ban cé thé ding ky tw _ dé tach tén trong macro. Quy dinh viét tén cia macro hay ham ty lap dé cap chi tiét hon trong muc 9.1 3. Chuyén sang Shortcut key: dé tréng (ban sé thuc hién viéc nay sau) 4. Trong Store macro in: dé mac dinh la This Workbook 5. Trong Description: ban gé néi dung sau: Enter address starting in cell B3 6. Bam OK 7. Thanh Stop Recording sé xuat hién trong sudt qua trinh ghi macro Ban cé thé di chuyén né dén vi tri khac (néu thay can thiét) bang cach bam trai va gid? chudt tai thanh tiéu dé cla thanh Stop Recording 8. Trong thanh Stop Recording, nut Relative Reference mac dinh bi mo (khéng tac dung - hinh 2-3). 9. Trong Sheet, bam vao B3 va g6 tén cia ban. O & dudi gé tén lop, tiép theo Ia tén tréng ma ban dang hoc. Chil y la ban str dung chi khéng co dau, vi néu cé dau thi ndi dung chi do trong macro sé khé doc. 10. Cho toan b6 cac ch dam va nghiéng. 11. Bam vao 6 B6 Nguyen Van Hung Lop DGCT-DKT K48 Truong DH Mo Dia chat wt yw \ sheets {shee { sheets / Ready _ Recording Hinh 2-3: Qua trinh ghi macro Nhu vay, macro c6é tén Address_abs da dugc ghi lai. Nhieng 6 ma ban da st dung trong qua trinh ghi duoc thé hién duoi dang dia chi tham chiéu tuyét déi (tén 6 gom co hang va cot, vi du A2, CD78....). Vi vay, nhiing 6 trong Worksheet do sé thc hién khi ban cho thc hién macro, tén ban, tén lop va tén trudng sé dug tao ra diing vi tri trong Worksheet. Tiép theo ban sé tao mét macro giéng nhw trén cing bang cach ghi macro. Chi khac la Macro truéc da chon khdi 6 (hay la vung) cé dia chi tham chiéu tuyét déi, con Macro sau sé stv dung quan hé tham chiéu 6 tong déi (quan hé voi vi tri cla 6 duoc kich hoat ban dau). 1. Chon Sheet1 22 Bam vao 6 B11 Trong menu Tools/Macro, chon Record New Macro (hinh 2-1). Trong Macro name: gd Address_Ref dé dat tén macro dé (hinh 2-2). ak wn Trong Shortcut key: Gite phim Shift va g6 chiv A, nhu vay phim tat sé la Ctrl+Shift+A. Ban nén tranh truong hop phim tat dé chay macro tring voi phim tat s4n cé trong Excel. Néu chang may ban tao phim tat chay macro trung voi phim tat trong Excel thi khi bam phim tat, macro do sé chay va phim tat sé khong c6 tac dung. 6. Trong Store macro in: dé mac dinh la This Workbook. 7. Trong Description: ban gé néi dung sau Enter address starting in activate cell position Bam OK oo Thanh Stop Recording sé xuat hién. Ban cé thé di chuyén no dén vi tri khac néu thay can thiét. 10. Trong thanh Stop Recording, bam vao nit Relative Reference cho sang lén (cé tac dyng nhu hinh 2-3) Excel sé tiép tuc ghi macro voi quan hé twong adi cho dén khi nao thoat khdi Excel hoac ban bam lai vao nut Relative Reference 11. G6 tén ban, lop, tén trvong va dia chi trong cdc 6 B11, B12, B13 va B14. Ndi dung the hién nhu sau: Nguyen Van Hung Lop DCCT-DKT K48 Truong DH Mo Dia chat xa Dong Ngac, Tu Liem, Ha Noi 12. Cho toan b6é cac ch dam 13, Bam vao 6 B15. 14. Trong Stop Recording, bam vao nut Stop Recording. Ban cé thé ste dung ch@ cé dau tiéng Viét, tuy nhién khi sang civa sé VBE thi chi? do sé rt khd doc. Ghi cha: Khi st? dung quan hé tham chiéu 6 twong ddi, chon 6 géc (ActiveCell) trudc khi chon nuit Relative Reference, cac 6 khdc quan hé tham chiéu twong déi voi 6 géc dé. Ban c6 thé Iya chon hén hop dia chi tuyét d6i va twong déi trong qua trinh ghi macro. Tuy nhién, ban khéng nén sty dung phuong phap nay vi qua trinh tham chiéu sé ln xOn, kho theo dai. 23 - Dé str dung tham chiéu tuong déi trong sudt qua trinh ghi macro, nut Relative Reference ludn sang (co tac dung). - Dé str dung tham chiéu tuyét déi trong suét qué trinh ghi macro, nut Relative Reference luén téi (khdng tac dung). 2.2- Thyc hién macro khi st dung bang diéu khién macro Thuc hién mét macro la qua trinh thi hanh cac lénh chtra trong macro dé (con goi 14 thuc thi hodc la chay macro. Ban cho thuc hién macro trén tl Sheet2 nhu' sau: 1. Chon sang Sheet2 va bam vao 6 nao dé ngoai 6 B3. 2. Trong menu Tools/Macro, chon Macros (hinh 2-1). 3. Bam vao macro co t6n Address_abs trong danh sach macro (hinh 2-4). Bam vao nut Run Sau dé ban sé thay n@i dung thé hién sau khi thyc hién macro & Sheet2 giéng nhu tai Sheet1. Ban sé thay cdng viéc the hién trong macro Ia rat | nhanh va chinh xac. Voi cac céng phwe tap va xtr ly lon hon, thoi gian dé thi hanh mét macro cé thé vai giay tham chi lén dén hang phut. Kim. tea Roce! Hinh 2-4: Thuc hién macro tif cifa sé Macro tai Sheet2 24 2.3- Thyc hién macro khi st dung phim tat (shortcut key) Thu tuc Address_Ref c6 thé due diéu khién trong bang diéu khién Macro (myc 2.2). Luc true phim tat da duc gan dé thuc hién céng viée dé, hay st dung phu'ong phap thay thé nay: 1. Tai Sheet2 ban bam vao 1 6 bat ky (vi du 6 H14). 2. An phim Ctrl+Shift va A. Khi dé tén va dia chi sé xudt hién duoi 6 do. 3. Ban hay thy thyc hién lai macro dé bang phim tat tai cac vi tri khac trong Sheet2, 2.4- Tam dirng thuc hién va thoat khoi macro Trong qua trinh thi hanh macro, néu muén tam dirng hay huy qua trinh thyc hién macro trvéc khi két thuc, ban 4n vao nut ESC trén ban phim. Dé thu hién céng viéc nay thi thoi gian thurc hién macro phai dd dai. Vi du, tht tuc Address_abs khi thi hanh thi khéng thé kip dng lai vi thoi gian dién ra rat nhanh. Bé kip “bai”, ban bd sung thém vong lp For... Next dé kéo dai thoi gian thyc hién (xem cach bé sung ma lénh vao trong macro trong muc 4.4). Két qua nhu hinh 2-5 & dui day: Range ("03") .Select Bet iveCe 11. FormilaRic: Range ("54") .Select ActiveCe11. ForimulaRic Range ("BS") Select, Ctra sé Microsoft Visual Basic hién ra théng bao rang thi tuc dang thy hién da bi ngat (Code excecution has been interrupted). Ban cé cac trvdng | hop lwa chon nhw sau: - Continue: tht tuc tiép tuc chay binh thudng - End: thi tue ding tai day. - Debug: g& réi trong thi tye (xem chi tiét trong Chuong 16). Tuy trwong hop cu thé ma ban chon mét trong cac trudng hop trén. Trong mét s6 trong hop si? dung vong lap, néu khéng can than thd tue sé khéng bao gid két thiic. Vi du nhu thd tue dudi day: "Thai tuc lam viéc tét Sub Chuan () Dim i As Integer en Do Range ("Al") .Value = i Msgbox Range("Al") .Value isiti Loop Until i > 10 End Sub ‘Tht tuc trén cé st dung vong lp Do ... Loop tang dan bién i tt 1 dén 10 I va thoat khdi vong lap do thod man diéu kién i> 10, tht tuc két thuc. Nhu vay tht tuc lam viée tdt. Con tht tuc duéi day: "Tha tuc nay bi 16i, khéng bao gid két thic Sub Loi () Dim i As Integer Fea Do Range ("Al") .Value = i Msgbox Range ("Al") .value Loop Until i > 10 End Sub Tht tuc & trén do quén khai bao dong lénh i =i + 1, do dé gid tri i van bang 1 va diéu kién i> 10 khéng bao giv dug thod man. vong lap khéng bao gid’ két thc. Ti dé dan dén tinh trang “treo may”. Phim ESC luc do vé tac dung, ban phai bam Ctrl+Break dé co thé thoat khai tinh trang “treo may” nh hinh 2-5. 26 Chuong 3 CAcH THUC HIEN MOT MACRO BON Glan Ban da biét cach thuc hién macro tly phim tat Ngoai ra, con mot phuong thtre khac cé thé thye hign macro, ban cé thé thuc hién macro tty cac diéu khién sau: - B6i twong trong worksheet hoac biéu dd. - Nut lénh (Button) trong thanh cong cu (Toolbar). - Thanh menu ctia Excel. 3.4- Thc hién macro tir mot déi twong trong worksheet C6 nhidu déi tuong trén worksheet cé thé diéu khién macro, vi du nhu déi tueng dé hoa trong worksheet. Cac bu@c thye hign nh sau: 4. Chon Sheet3 hay bat cr sheet nao cén tréng. 2. Vao menu View/Toolbars chon Drawing (trir trudng hop thanh cong cut Toolbar da co trén man hinh). 3. Chon déi tung dé hoa nh hinh Oval va vé hinh oval do: 4. Go ch vao hinh Oval dé bang cach bam phai chudt, rdi chon Add Text tiv thye don tat (hinh 3-1). 5. Gé ndi dung Address rdi bam ra ngoai dé thoat. _ 6. Ban 66 thé thay déi kich thu@c hinh Oval cho phd hop dé thé hién day aii ndi dung chi & bén trong, ngoai ra con phai dam bao tinh my thuat va tién dung khi sl dung. 7. An phai chudt vao hinh Oval d6, chon Assign Macro dé gan thu tuc cho déi twong hinh Oval. 8. Trong bang Assign Macro, chon macro cé tén Address_Ref. 9. Bam OK. Sau-do, ban cho thy hién chay tht macro: 4. Chon 1 6 nao do (vi dy nhu 6 J13). 2. BAm vao hinh Oval trén, macro sé thyc hién. 27 Ghi chai: Néu ban muén di chuyén & wong dé hoa (c6 gan diéu khién macro) ra khdi ché khac trong worksheet, st dung phai chudt dé di chuyén | (b6i vi bam trai chuét thi macro sé thy hin). Con néu ban muén thay déi macro khac thi ban bam phai chudt trén di tvong, chon Assign Macro va Iwa chon macro nao ban muén. Nhiing déi tuong trong Drawing cé chira thi tuc (macro) khi di chuyén chudt toi sé cé hinh ban tay, dé la dau higu dé phan biét voi déi twong khéng chiva thd tye Format AutoShape, Hypertink, 14 | «+ \ cheeti { Sheet ) sheets / shesty / | i Rey E ui Hinh 3-1; Gan macro vao hinh Oval 3.2- Thue hién macro tv nut 'énh trong thanh céng cu Ngoai cach 6 trén, ban cé thé thyc hién macro tv nut !énh (button) trong cac thanh céng cu ty tao (Custom Toolbar). Vi dy, ban c6 thé gan viée didu khién macro Address_abs vao nit hinh mat cudi (Smiley Face) nhu sau: 1. Di chuyén chuét dén mot diém nao do trong cae thanh Toolbar. 2. An phai chu6t, trong thye don tat chon Customize. 3. Trong bang Customize, chon tab Toolbars (hinh 3-2). 28 & Chon nut New. Sau do bang New Toolbar xuat hién, ban g6 tén vao (vi du Macro1) roi OK Trong bang Customize, chon tab Commands (hinh 3-3). a ND Trong hdép Categories, chon AutoShapes. Trong Commands, cuén xudng cho dén khi ban chon duoc hinh ung y (hinh Smiley Face). 9. Tai hinh Smiley Face, git? trai va kéo chudt vao trong thanh céng cu Macro1 (hinh 3-4). Ban cé thé chon thém cdc biéu tuong khdc néu can @ 140. Bam phai chudt vao nut Smiley Face, thwc don tat sé hién ra. Ban C6 thé stra hay xod hinh dé va thay bang cac hinh khac. Xem thém mét sé chtrc nang ctia thuc don tat tai muc 3.3 & dui day. 11. Chon Assign Macro trong thye don tat, chon macro Address_abs va bam OK. 12. Dong bang Customize. Toolbars Commands Options Toolbars: (Formatting | [2 30 settings © Borders | (chart (Chart Menu Bar Circular Reference | | | | | I | | [Compare Side by Side [ Contral Toolbox (Diagram 1S Drawing (Drawing Can Exit Design {Forms [. Formuls Au: Hinh 3-2: Tao thahh céng cu méi 29 eee oes | Qotions: Toolbars Commands To add a command to a toolbar: select a category and drag the command out of this dialog box te a toolbar Categories: Commands: Window and Help Dr | Chatting | iWeb | Forms Control Toolbox | Macros Builtsin Menus (New Menu ineuite Sole Tookyars Commands Options To add a command to a tacibar: select 8 category and drag the. command out of this dslog box to a toolbar. Commands: Nea i New Reset Button tmage Open Edit Button Image... 7 Close ‘Change Button Image > fi seve Defaut Style [Save As... ‘ext Only (Alays) Assign tecro, Hinh 3-4: Tao cdc nit Iénh trong thanh Macro1 va gan Assign Macro 30, Ghi cha: Thanh céng cu ty tao thudéc s& htru ctia workbook ma no duoc tao ra. Thanh céng cy dé van ton tai trong Excel cho di ban da dong workbook tao ra no. Khi ban bam vao nut chtra thi tuc thi workbook tao ra né sé dug mora déng thoi thi hanh cac lénh duoc gan cho nut do. Ban hay thir str dung nut lénh vira tao ra dé thure hién céng viéc sau: 1. Tru@c khi thu hién thd tuc, ban xoa sach ndi dung cla Sheet2. 2. Bam chuét vao nut Smiley Face trong thanh céng cu Macro1 Két qua sé thé hién trén Sheet2. 3.3- Thue hién macro tl thanh menu Tw thanh menu ctia Excel ban co thé tao ra cac menu moi ma khi lwa chon chung thi macro sé thuc hién. Vi du nhu tao menu mdi cé tén Macro2 nam ngay sat menu Help, menu Macro2 cé chtra menu con Work Address, cach thc hién nhu sau . Truéc khi thure hién, ban phai chac chan rang Workbook chtra macro cla ban dang dug kich hoat (néu khéng ban phai mé ra). N Thém mét worksheet moi bang céch vao menu Insert/Worksheet (dat la Sheet4). w Trong menu Tools/Customize, chon tab Commands trong bang Cus- tomize 4. Cuén xudng déng cudi cling va chon New Menu trong Categories (hinh 3-5). 5. Gif trai chuét 6 New Menu trong Commands va kéo vao dong menu canh Help 6. Bam phai chudt vao New Menu trong thanh menu cua Excel, thc don tat hién ra. 7. Thay tén mdi trong Name la &Macro2. Néu chi can menu nay (menu me) thi bam vao Assign Macro dé chon (hinh 3-6). Néu can thém cdc 31 menu con (menu item), khéng can gan thd tuc vi menu me chi mang tinh quan ly. To sss a conmantoatosbr: sdb acategsry entcragthe conn cas. is doa box co 300d Catagories Commande: edo andiin nal Dene - , Augen Chante web Forms ‘ental Tax saces Shei / sheet \sheers 7 Hinh 3-5: rao New Menu trong thanh menu ctla Excel eS et “Window Help| Todd cme atacbar sts scan hee iedsog tanto seocbe \ Estexees commas | Steen a3 an CONG ORON = a i Le F BES We) WA Sent {Sheet { Sheet \Sheeta / ay Hinh 3-6: Tao menu Maro2 trong thanh menu cua Excel 32 i i Ky tw & trvoc M sé gach chan chi M trong menu Macro2 (tré thanh Macro2), d6 chinh la phim tat dé thi hanh Macro2 (chi can bam Alt+M), Tén menu cé thé é hién duoc tiéng Viet) va khoang tring, diéu dé khéng 6 dau (thé cé duoc 6 tén macro hay ham tu lp. Tiép theo ta tién hanh tao menu con trong Macro2: evant tooo: dsl bt st ry and dase curd Cotman a Curen Menu Ren Coster Buten \ Steet { Stes / Steet )sheota/ han i Hinh 3-7: Tao cdc menu con 1 - Trong Categories (trong trvéng hop bang Customize van dang mo), chon Macros. 2. Tai Commands, chon Custom Menu Item (hinh 3-7), git trai va kéo chuét dén phan tréng 6 dui Macro2 (ving dug khoanh mau do). Bam phai chu6t vao Custom Menu Item trong menu me Macro2. Tai thyc don tat, dai tén trong Name thanh &Work Address (hinh 3-8). . Sau do vao Assign Macro dé chon macro thyrc hién. aa eR w Cudi cling la dong bang Customize. 33 Hinh 3-8: Di tén menu con, gan Assign Macro va menu duc tao ra. Tung ty nhu voi nut !énh trong thanh céng cu ty tao, menu moi tao duoc lwu gi trong Workbook do va tudn hién hiru trén ctra sé Excel, ké ca trwong hop ban da dong Workbook do. Khi ban bam vao menu thi Workbook chtra menu do tu déng mo ra va thyc hién lénh Se os | Delete fctes iceman) oo 2 Names Bcustom tuten Tea comand ated 9 __ Spr Biten Image ‘out of this dialog box te ateabar. “Paste Button Image cone B nagtounn mee te etc © oom Suge Bacon tee | & > dh Bi oom Defagt sho eoli pao a2 SIetow Omer) eo ow Woo “Teton ovens) sg go ae | tage ard vert leoaave (OQ ow @ Dp B Oysa? Hinh 3-9: Tao mdi va thay déi trong menu con a4 reese =S2 chee Cancel_| Erase J cker Hinh 3-10: Siva chifa hinh cua menu con Bang cach tién hanh tuong tw, ban co thé tao thém dug cac menu con khac. Ngoai viéc gan tén (Name) va thu tuc (Assign Macro), ban con co nhirng Iwa chon khac nhw sau: - Reset: Tra lai cai dat géc (hinh &] cung voi tén Custom Button). - Delete: Xoa menu con. - Copy Button Image: Sao chép biéu tugng cia menu con. - Paste Button Image: Dan biéu tugng cla menu con. - Reset Button Image: Cai dat lai hin cll menu con ([Z]). - Edit Button Image: Stva hinh ciia menu con theo y muén (hinh 3-10) - Change Button Image: Bai hinh cla menu con (hinh 3-9) - Default Style: Kigu mac dinh ctia menu con, gdm cé hinh va chiv. - Text Only: Chi cd chi trong menu con (kh6ng cé hinh). 3.4- Thay ddi lwa chon trong macro Néu ban muén thay déi cdc Iya chon chi tiét trong macro, bu dau tién ban vao menu Tools/Macro va chon Macros (hoac phim tat AlttF8). Cura sd Marco hién ra nhw hinh 3-114 voi danh sach toan b6 macro: Adsrose_ abe acto na: siacenanieaE i | [ioiet State cunt bese: Enter adress starting n cel Delte | Macosin: This Workbook Oprions Hinh 3-11: Ctra sé Macro va Macro Options... Sau dé chon tén macro ma ban muén thay déi, cé mét sé Iwa chon sau: - Options: khi ban chon Options thi ctra sé Marco Options hién ra nhu hinh 3-11. Ban cé thé thay déi phim tat va mé ta lai cng viéc macro trong Description - Edit: khi chon muc nay clra sé Microsoft Visual Basic (MVB) hién ra va tro chudt sé nhap nhay tai vi tri cla macro do. Ban co thé stra déi ndi dung theo y muén va tat nhién phai ding néu khng thi macro sé khong chay dugc. - Delete: xod macro nao ban muén. Trude khi xoa thi Excel sé hdi ban c6 chac chan x6a hay khong? - Macros in: hién danh sach cac macro tuy thudc vao cac trvdng hop chon trong hép cuén tha xudng. + All Open Workbooks: toan b6 workbook dang mé + This Workbook: chi trong workbook hién hanh. + Tén tng workbook dang du’g'c mé trong Excel Ngay phia duoi muc Macros in la Description (mau xanh) m6 ta su hoat dng cua ttrng macro trong dong phia dudi Chuwong 4 CUA SO VISUAL BASIC EDITOR (VBE) Khi ban tién hanh ghi macro dau tién, Excel sé tao ra module trong workbook do. Module duoc quan ly trong ctra sé Microsoft Visual Basic ctia Excel. Trong module dé chtra cac ma lénh (code) dug viét bang ngén ng VBA dé xay dng nén cac macro. Cac buréc thyc hién dé nhin thay module: 1. Tw menu Tools/Macro chon Macros. 2. Chon macro Address_abs va bam vao nut Edit. Civa sé Visual Basic Editor hay Microsoft Visual Basic (viét tat la VBE hay MVB) hién ra nhu hinh 4-1. Ctra sé VBE chinh la noi thyc hién cdc céng viéc trong dw an VBA cua ban. Ban cé thé thay ré duoc ndi dung tung thd tuc hay ham khi cuén xuéng. Hai chong trinh con ma ban viva tao bang chtrc nang Record New Macro duge hién thi chi tiét trong cla sd VBE. Ngoai ra, clva sd VBE con la méi truong dé ban xay dung mét chtre nang diéu khién khac nhu:: tao bang diéu khién tuy bién (UserForm), thay déi thudc tinh ctia cac diéu khién, 4.1- Cau tric ctra sé VBE Ctva sé VBE [a noi quan ly, lwu tro toan bé cac thi tuc (macro) cling nhu cac dy an xay dung trong VBA. Cau tric ctva sé VBE nhu sau: - Dong trén cing gém co bidu tong él va tén ctra sé Visual Basic Editor, tiép do la ten cla Workbook, cudi cing la dy 4n ban dang thu hién. ~ Dong ther hai la cac menu diéu khién chtva trong thanh menu ctia VBA. - Dong thw ba Ia thanh céng cy tigu chuan (Standard) duoc mac dinh xuat hién trong clva sé VBE (hinh 4-1). Ngoai ra, con mét sé thanh céng cu khac khéng dug hién thi san nhw Debug, Edit va UserForm (hinh 4-3), Tuy trudng hop cu thé ma ban cé thé cho hién thi va stv dung céng cu nay. Géc phia trén bén trai la chi tiét dy an cla ban (Project Explorer). Dy an bao gém tap hop cac déi tugng Excel Objects (gdm cac déi tvong trong Excel nhu: Sheet, This Workbook), Forms (cha céc hép ddi thoai tuy bién do nguOi str dung lap ra), Modules (chtra cac module con nhw Module, Module? ...). Module la noi quan ly, lwu trir cae tht tuc (sub) va ham (function). Méi module 6 thé chtra mét hay nhiéu Sub hoae Function. 37 Goc phia du¢i bén trai la clra sé thudc tinh (Properties window) ctia déi tuong dang duoc chon. Gém co tén cia déi tong, phia dui la thuéc tinh cla nd. Ddi tugng cé thé la This Workbook, cdc Sheet, UserForm hay Module, Class Module, [nov tits, su Rien ik ctcimememmen som ae] wan ds Soccer | mene Gecoey | | hata ene ©) ThisWorkbook Activecell. Fs "Lop DCCT-DKT K46" iors Sora rea cm serrate siete mi slr ae Module Hoi Apts | cinedeed 2" Stmageeyaeaamiay ei Hinh 4-1: Cifa 6 Visual Basic Editor (VBE hay MVB) aa an ee SSE ai I 3 é 5 8 {oi i Suid = , E £ 2 | 5 a 5 5 3 S 5 = 3 i SI § 3 5 é = 3 E £ g F | 8 I Hinh 4-2: Cac nat lénh trong céng cy tiéu chuan cua cifa sé VBE 38 : Céc thanh céng cy Debug, Edit va UserForm trong VBE Phan chiém dién tich lon nhat ctva sé MVB chinh 1a clva sé code (Code window). D6 la noi soan thao ma lénh (code) trong macro hay xay dyng User- Form. Tai do, néi dung tht tuc, ham sé dug hién thi trong module hoac trong ting déi twgng trong Excel. Co thé coi module la noi quan ly, lwu trir cdc tht: tuc (Sub) va ham (Function). Méi module cé thé chtra mét hay nhiéu thu tuc hoac ham. Phia trén ctva sé soan code cd Hép déi tueng va Hop thd tuc, sv’ kién. Van dé nay duoc dé cap cu thé hon trong muc 4-2. Ctra sé nam dui cling cé tén la Immediate, thong thudng khong hién thi trén VBE. Trong cla sd VBE, ban vao chon menu View/ Immediate Window (phim tat Ctrl+G). Ctra sé Immediate hién ra (hinh 4-7, hinh 4-8). Thong thwong, clea sé Immediate nam phia dui man hinh va ban cé thé di chuyén, thay déi kich thwoc theo y muén trong VBE. Van dé nay duoc dé cap 6 muc 4.3. éu chi'st? dung thuat ngi macro déi voi cdc chvong trinh ndi chung thi nhidu truéng hop sé khdng 6 nghia. Theo ding su lam viéc thi macro phai la thii tuc vi chi thti tuc moi cé thé dé chay duoc (Run Macro) va cé thé can thiép dén nhiéu déi tung, con ham ty lap (Function) thi chi lam viée trong mt 6 chtva tén ham. Chinh vi vay, chung ta stv dung thé tuc (Sub) va ham ty lap (hay Function) dé thay thuat ng@ macro ndi chung 4.2- Clva s6 soan thao code (Code window) Mot thd tuc duoc bat dau voi Sub va két thc bdi End Sub. Ham tu lap cing bat dau bang Font va két thuc boi End Function Cac tht tuc hodc ham ty lap néu duge lap ra dé co thé ding chung trong Excel thi ban.phai xay dung trong cac module téng quat (khéng phai trong Class Module). Dé tao ra module téng quat, ban vao menu Insert\Module 39 trong ctra sé VBE. Module ding chung cé Hép déi tuong voi tén la General, danh sach thi tuc trong m6éi module duoc liét ké trong Hép thu tuc, su kién (hinh 4-1). Ngoai ra, ban cn c6 thé xay dung tht tuc cho déi tugng la Workbook, ThisWorkbook vi nhiing su kién xay ra déi voi nd. B& biét chi tiét, moi ban xem phan lap trinh sw kién trong Excel tai Chuong 18. ws ThreeNunbe: / f Ose num Ae Tnveger, num? ko is nun = 10: num = 20: nung = 30 Msqbox "Gis tri truny binh la" & HyAverage (nul, numZ, nun) MsgBox "numi= " £¢ nwt £ Che(13) ¢ "nunz= " @ num2 ¢ Chr (13) & "numd End Sub ton Hyaverege (num, = punt = num + 1 MyAverage = (num1 + numz + numa) / 3 [Bini aon end Fu Quequan End Type Sub Hienthongtin() Dim Danhsach + Danh sach cdc chudng trinh dugc xay dung trong ting module 40 seas oe ineemetnesetpenta negBox "Hello World!” [ End Sub 1 Hinh 4-6: Thi tuc cita su kién d6i tugng Workbook mé ra (Workbook_Open) Sau Sub hay Function la tén ctia thd tuc hay ham. Tl khod Sub, End Sub, Function va End Function mac dinh cé mau xanh da troi (hinh 4-4). N6i dung bén trong thu tuc hoadc ham nhu sau Théng thudng, ngay dudi dong Sub hoac Function la dong mau xanh la cay voi dau ngoac don (‘) 6 dau dong, do la loi cht thich (comments), Loi chu thich khong Anh huOng dén macro va ban co thé thay déi ndi dung ctia né. Khi ban tién hanh ghi macro, tén macro va loi mé ta ndi dung ste dung tu dong xuat hién dudi dang cht thich Ngoai ra, ban cé thé tw bd sung chu thich trong qua trinh xay dung macro. Khi dé, ban sé dé dang hiéu duc cac buoc cling nhu muc dich thyc hién cla cac dong ma lénh Tiép theo la ndi dung ma Iénh, day chinh la néi dung chinh quyét dinh sw fam viéc ctia Sub hay Function. Ban co thé stva ddi, thém bot ndi dung ma lénh cho phu hop. Duong mau den lién dai cé y nghia phan chia cdc Sub (thu tuc), Function (ham) trong Module. Dau gach du6i (_) thinh thoang gp 6 cuéi déng ma lénh Trong trong hop ma lénh qua dai thi ban dung (_) dé nga dong, hung duoc hiéu la ma lénh van lién tuc. Trong muc 12-2 trinh bay chi tiét va cach ngat dong. Ngoai ra, dau gach dui con bat gap trong cdc thd tuc sw kién (hinh 4-6). Khi ban ghi macro phire tap hon, ban co thé gap mot sd ma lénh tw dong xuat hién. Excel ghi lai tat ca nhing gi ban thu hién mét cach cu thé nhat, ké ca nhiing thudc tinh dugc cai dat mac dinh trong Excel (dang st dung) z nhung ban khéng hé can thiép t6i. Ban cé thé luge bd nhiing ma lénh tha = do ma khéng anh hung dén két qua thu hién macro (xem tai muc 4.4.2) Dé r6 hon ban the hién vi du sau day: 1. Tai 6 B3 ban tién hanh ghi macro, dat tén macro la Kiem \_tra. 2.66 s6 1.2 vao 6 dé rdi tién hanh dinh dang lam dam, nghiéng sé, can s6 vao gitra 6 va chon mau dé cho sé trong 6 B3. 3. Khi céng viéc hoan thanh, ban chuyén sang 6 C3. Sau dé bam nut dtrng ghi macro. 4i Bay gid, ban kiém tra xem macro lam viéc nhv thé nao bang cach bam phim Alt+F 11. Trong civa sé VBE, ban mé module co chia thd tuc vira dure ghi va sé thay néi dung nhu sau (da Iuoc bét nhiéng ché tréng khéng can thiét): Sub Kiem_tra() it ‘Kiem_tra Macro 5 ‘Macro recorded 12/31/2006 by PhanTuHuong Range (“B3”) .Select ActiveCell.FormulaR1Cl = “1.2” Range (“B3”) .Select 3 Selection. Font.Bold = True Selection.Font.Italic = True With Selection HorizontalAlignment = xlCenter End With Selection.Font.ColorIndex = 3 ; Range (“C3”) .Select End Sub Trong tht! tuc trén, ban sé thay nhing doan mé lénh tu nhién xuat hién (gach 6 gitra). D6 chinh la nhieng cai dat mac dinh san trong dinh dang 6 cia Excel ma chting ta khéng hé can thiép toi. 4.3- Ca sé Immediate Truc khi nghién ctru vé ngon ngi VBA, ban hay xay dung vén tir vung trong VBA cho ban. Lam thé nao dé ban thyc hién cong viéc dé nhanh chong va khong bi mét mdi? Lam thé nao dé ban hoc duoc nhitng cau lénh VBA? Ctra sé Immediate sé gitip ban tra Idi cac cau hdi trén. Tai cla sd Immediate, ban nhap vao cau lénh VBA don gian, sau dé bam Enter, Excel sé kiém tra 42 f va thu hién cau lénh dé. Néu ban muén tim hiéu thém thong tin thi ban thém dau hdi (7) & trude thay vi gd chi Print, két qua sé thé hién ngay & dong duéi (hinh 4-8). Voi tht tuc hoac ham, ban phai xay dyng chuoing trinh theo duing quy dinh cla ng6én ngi VBA thi moi co hiéu luc. Qua trinh thy hién (thi hanh macro, tinh todn ham) dién ra lién tuc va rat nhanh, ban khong thé theo déi, kiém tra tung buéc mét cach binh thudng. Cai hay cia ctra sd Immediate la cho phép thy hién tiyng cau lénh mot, két qua thé hién ngay trén cla sd Excel hay cla sé Immediate. Definition Shift+e2 Last Position Ctr+Shift+F2 num2 as Inted 20: num3 = 30 (tri trung binh la" ¢ biol, num2, num3) t=" © num1 ¢ Chr (13) hum2 © Chr (13) ¢ "num =) Object Browser F2 Immediate Window Ctrl - Locals Window » Watch Window Loc: te I Nganh @ceT Oo so) P12) wey \ Steott \ Sheet? / shect3 / FRe n Hinh 4-8: Ctra sé Immediate 43 Vi du tai hinh 4-8, tleng cau lénh thuc hién céng viéc nhu sau: Worksheets ("Sheet2”) Activate | ‘Kich hoat Sheet2 Range (“A2”) .Select ‘Chon 6 A2 (b6i den) Range (“B5”) .Value= “Nganh DCCT” ‘Thé hién “Nganh BCCT” trong 6 BS Range (“BS”) .Font..ColorIndex = 3 ‘Gan mau dé cho chi tai 6 BS Range (“B5”) .Font.Bold = True ‘Gan chit dam tai 6 BS Trong qua trinh thyc hién ma gap 16i, cla s6 VBE sé théng bao ngay. Vi du nhw hinh 4-9, bang tinh Sheet4 kh6ng tén tai trong Modau.x1s, ctva sé VBE sé bao Idi. Hinh 4-10 thong bao khi ban chon mot sheet khéng tén tai trong workbook. ?ActiveYorkbook .Name Modau.x1s ?Sheets. Count 3 ?Activesheet. Name Sheet2 WorkSheets("Sheet4”). Select Hinh 4-10: Cita sé bao 181 4.4- Hiéu chinh trong VBE Ctra sé VBE (hinh 4-1, 4-4) co khu vuc soan thao code trong gan ging nhu Word, ban c6 thé dé dang tao nhiéng thay ddi trong dé nhu bd sung hay bét di ndi dung, tdi wu, rut gon ma lénh thea khéng can thiét,... Cac phim mui tén trén ban phim duoc st dung dé di chuyén chudt lén, xudng, sang trai, sang phai, sao chép, cat dan, tim kiém, thay thé,... giéng nhu trong Word. Dui day la mét sé thay déi chinh cé thé thuc hién duoc: 44 4.4.1- Thay déi tén cua thi tuc Trong trvong hop ban muén thay ddi tén ctia tht: tuc vi ly do nang cap chuong trinh hay vi nhiing ly do khac, ban khéng thé thue hién cdng viée dé trong Excel ma bat budc phai thy hién trong ctra sé VBA. Vi dy, ban co thé thay ddi tén macro Address_abs thanh Dia_chi chang han, chi can-g6 ndi dung Dia_chi thay thé Address_abs trong dong Sub Address_abs(). Dong thoi, ban cing stra ndi dung ghi cht: phia duoi. Ban co thé kiém tra két qua stva ddi trong hop Macros Name ctia ctra sé Macro khi bam vao phim Alt+F8 tai Excel. Range ("B3") ActiveCell.Fo: aRICL = "Nguye va Hinh 4-11: Thay déi tén cia th tuc 4.4.2- Stra déi ma Iénh trong thd tuc Nhu da dé cp, chtrc nang ty ghi macro sé ghi lai toan bé nhéeng cai dat mac din trong Excel. Vi vay, mét sé ma Iénh sé khong can thiét va nén xoa bd. Ching ta rut ngan tht tuc Kiem_tra lai bang cach xod bd nhiing ma lénh thtva (duoc gach 6 gira), cach thc hién giong nhv o trong Word. Két qua nhu thd tuc duoi day: Sub Kiem_tral() ‘Kiem_tra Macro ‘Macro recorded 12/31/2006 by PhanTuluong Range ("B3”) .Select ActiveCell.FormulaR1Cl = “1.2” Range ("B3”) .Select Selection.Font.Bold = True Selection.Font.Italic = True With Selection -HorizontalAlignment = x1Center End With Selection.Font.ColorIndex = 3 Range (“C3”) .Select End Sub Ban hay chay tht th tuc trén, chac chan két qua van nhu luc truéc khi stra. Nhu vay, sau khi ghi macro ban nén loai bé nhing doan ma lénh khéng can thiét, tranh viéc Excel thuc hién nhing cong viéc thiva va tht tuc dai dong. Bé thurc hién dug viéc loai bé nhirng ma Iénh thiva thi ban: phai so sanh gira cong viéc da thc hién tl’ ban phim voi ndéi dung ma cla macro ghi lai, ti do tim ra sy khdc nhau gidra chung. Ngoai ra, ban phai co nhivng hiéu biét nhat dinh vé VBA moi co thé chinh stra mot cach hop ly va khong sai sot. Chting ta lai quay tro’ vé tht! tuc Address_abs duoc ghi tai muc 2.1, ndi dung thi tuc nhw sau: Sub Address_abs() ‘Address_abs Macro ‘Enter address starting in cell B3 Range (“B3”) .Select ActiveCell.FormulaRiCl = “Nguyen Van Hung” Range (“B4”) .Select ActiveCell.FormulaRICl = “Lop DCCT-DKT K48” Range ("B5”) .Select ActiveCell.FormulaR1Cl1 = “Truong DH Mo Dia chat” Range (“B3:B5”) .Select Selection.Font.Bold = True Selection. Font.Italic = True Range ("B6”) . Select 5 End Sub Ban da thay thu tuc Address_abs tdi wu chua? Cau tra loi la chua. Ban cé thé rut ngAn thd tuc do lai ma van dam bao tht tuc hoat déng binh thuong Ta co thé thay hai dong lénh: Range (“B3”) .Select ActiveCell.FormulaR1Cl = “Nguyen Van Hung” bang médt dong nhu sau: Range (“B3”) .FormulaRICl = “Nguyen Van Hung” Két qua stra déi nhu sau: Sub Address_abs() ‘Address_abs Macro 46 ‘Enter address starting in cell B3 Range ("B3”) .FormulaRICl = “Nguyen Van Hung” Range (“B4”) .FormulaRICl = “Lop DCCT-DKT K48” Range (“B5”) .FormulaR1Cl = “Truong DH Mo Dia chat” Range (“B3:B5”) .Font.Bold = True she ele BS ial Range ("B3:B5”) .Font.Italic = True Range ("B6”) Select End Sub Nhu ban thay, th tuc d@ duge rut ngdn dang ké. Bay gio chung ta bd sung thém thdng tin vé tudi, qué quan cho anh “Nguyen Van Hung” nay vao cac 6 B6, B7 & phia duoi. Két qua thd tuc da bé sung nhu sau Sub Address_abs1() \Address_abs1 Macro ‘Enter address starting in cell B3 Range ("B3") .FormulaRICl = “Nguyen Van Hung” A ach Ct Range (“B4”) .FormulaR1Cl = “Lop DCCT-DKT K48” a Range (“B5”) .FormulaR1Cl = “Truong DH Mo Dia chat” | Range (“B6”) .FormulaR1Cl = “Tuoi: 21” 4 Range (“B7”) .FormulaR1Cl = “Que quan: huyen Gia Loc - i Hai Duong” (cing 1 déng) Range ("B3:B7”) .Font.Bold = True Range ("B3:B7”) .Font.Italic = True Range (“B8”) . Select End Sub é kiém tra thd tuc trén hoat dong nhu thé nao, ban di chuyén chudt vao trong bat clr néi dung nam trong tht tuc do (tén thts tuc phai hién thi trong Hop thu tuc, sy kién), sau dé vao menu Run va chon Run Sub/UserForm (hoac. phim tat F5) nhu hinh 4-12. Sau dé vao View/Excel (phim tat Alt+F 11). Luc dé, clva sd MVB van hién hivu trong Exce!. Dé déng ctra sé VBE va tro vé Excel, trong civa sé VBE ban vao menu File, sau do chon Close and Returh to Excel (phim tat Alt + Q). | 47 Range ("B4") .FormuleRICi = "Lop DCCT-DET K43" Range ("B5") .FormulaRiC1 = "Truong DH Mo Dia chat" Range ("B65") .FormulaRici = "Tuoi: 21" Range ("B27") .FormulaRt "Que quan: huyen Gia Loc ~ Hai Du Range ("B3:B7") .Font Bold = True Range ("B3:B7") -Font.Italic Range ("B8") Sel End ag" Nguyen Vane Heng | Lop DCCPOKT Kt Trion DH Mo Dia chat | Tuoi: 21 Que quan: Imyen Gia Loc - Hai Luong, Hinh 4-13: Két qua thyc hién thi: tuc Address_abs1. 4.4.3- Tao thém Module trong cia s6 VBE Néu muén bé sung thém mt module, ban vao menu Insert va chon Mod ule. Ngoai ra, ban co thé bd sung UserForm (bang dieu khién) hay Class Module theo y mudn. Cach xay dyng UserForm dugc dé cp trong muc 19.2 =e yBAProject (Addre, 24 Wicrosoft Excel OF BH) Sheet (Sheet - seeB3") FormulaRicl = "Nguyen Van Hinh 4-14: Thém mét module mdi 48 Se aa ~adaeaienubieh : Khi bam vao menu Module, mot module réng sé duoc tao ra voi ten mac dinh theo thir tu Modulet, Module2, Modute3,... Ban 06 thé xay dyng cac ham va thi tuc 6 bén trong Module mét cach thoai mai Modules Module (Address _abs Alphabetic | Categorized | ' Excel Objects a. BE) Sheet1 8} sh —.___ Hinh 4-15: Module3 duc tao ra va ban thay tén bang Bosung Dé dé quan ly, ban cd thé déi tén cla module va duoc tao bang cach chon tén module, sau dé vao ctva sé thudc tinh Properties dé thay déi tén thanh Bosung (trong Name). Sau do, ban co thé xy dyng cac thi tuc hay ham trong module Bosung nay. Ghi chu: Méi module cé thé chwva duoc nhiéu thu tuc hoac ham. Voi nhiéng dy an lon, ban nén co phuong phap quan ly module mét cach cy thé, ré rang. Nén phan chia ré rang nhom module chtra tht tuc, module chtra ham va dat ten cho module do. 4.4.4- GO bo module Khi muén g& bé mét module nao dé trong dy an VBAProject, ban chon tén menu do (vi du nhu Bosung). Sau dé ban bam chuét phai va thyc don tat hién ra, chon Remove Bosung... (hinh 4-16). Khi dd, clra sé MVB hién ra héi ban cé xuat module Bosung true khi g& bé nd? Ban chon Yes dé lwu lai truéc khi g& bd (néu chon No thi sé khdng Iuu lai). Module Bosung sé Iwu lai voi tén *.bas. Ban co thé mé file via dug luu lai do bang VB 6.0 hoac tl Notepad. 49 [i Sata eal ‘yew cate Mearogetteopgten., | | iS | oe | b Pham_eae 0, ange ("C5") Select i ; Jetivecel! Formlngi¢l = "Helio Se 89arg Beara bse Range ("C5") Select i Selection. Font Bold L. | Selection.Font Colorindex ~ 9 cl Slur Setection.Fone aaa piece (ome) fate = “arial feta the ane ved code to tee = ery ote coeds es Hinh 4-17: Mé module Bosung.bas tiy VB 6.0 ‘Sub Phim_tal0) Phirm_tat Macro acio recorded 3/28/2007 by Phan Tu Huong Keyboard Shorteut: Chis] Range(C5"), Select ActiveCell.FormulaR1C1 = “Hello Wort!" Range((C5") Select Selection. Font Bold = Tue Selection. Font.Colortndex Hinh 4-18: Mé module Bosung.bas tif Notepad Chuong 5 LAM ViEC VOI FILE EXCEL CO CHUA MACRE 5.1- Sw dung chtrc nang Security May nam gan day, do virus macro phat trién nén Microsoft da bd sung thém ché dé an toan trong cdc &ng dung. Che nang Security diéu khién sv lam viéc ctia macro, tlrc 1a co thé cho macro hoat déng hoac khéng hoat dong. Voi chtre nang diéu khién d6, ban sé yén tam hon khi str dung Excel trong céng viéc. Dudi day la cach sl dung chtrc nang Security trong Excel 1. Vao menu Tools/Macro va chon Security (hinh 5-1), ctra s6 Security hién ra 2. Trong Security, tai tab Security Level c6 4 truéng hop chon nhu sau: - Very High: Dat ché d6 an toan rat cao, cac macro kh6ng thé thurc hién duge, chi triv macro ctia Office. Khi md file cé macro thi sé hign bang théng bao nhu hinh 5-2. Ndi dung thong bao cac macro da bi v6 hiéu hoa - High: Dat ché d6 an toan cao. Chi nhitng macro dug xac nhan mdi cd thé thc hién, céc macro khac bi vo hiéu hda. Dé c6 macro duge xac nhan, ban phai dang ky trong menu Tools\Option\Security\More Macro\Trusted Pub- lisher. Khi ban m@ file cé macro thi sé théng bao cac macro da bi v6 hiéu hoa nhw hinh 5-3 ~- Medium: Dat ché d6 an toan trung binh. Khi chon tru@ng hop nay, néu mé file c6 cha macro thi Excel sé canh bao nhw hinh 5-4. Ban cé thé Iva chon Enable Macros dé macro hoat d6ng, hodc Disable Macros dé macro khdng hoat déng. Trong trwong hop file cla ban khéng ste dung macro, néu khi mo Excel canh bao nhu hinh 5-4 thi file clia ban da bi nhiém virus macro. - Low: Khéng dat ché d6 an toan, ttrc la Excel khong canh bao bat ctr van dé gica Nhu vay, khi ban st dung VBA nén dat Security Level & mirc 49 Medium hoae Low. Khi dé cdc tht tue hode ham moi hoat dong duge. Rat nhiéu 51 trwong hop macro khéng hoat dong dug khi dé ché dé Security Level & mitre do Very High hay High ma nguoi st dung khdng r6 nguyén nhan. ‘Geutjieal!| romances iden High. crly mazes eaated n bus ‘eran. Mother nope and reir Obigh. Cry signed maces from tasted sources witb alonedto ron. Unsigned macros ere autonaizay disabled conchoose whether ornst ton pstekisiy unsafe ted fom patertialy virus scanning yo ald ) Lv rot recorerended). Yeu are nat pot Urgale maces, Use this settng only & yu site nstalled, cr youhave checked the you open. 2 woes. 2 ecarfew oor, fo High and a digtally signed Trusted Certéicate is not nge the security levelto 3 lower setting (nck reccrnmended), or ‘a certificate issued by a Certficate Authority attached to the macros. To run the macros, cl \ IMacros are disabled because the securty level <2) request the macros be sioned by the author y to disable macros, but if the Hinh 5-4: Canh bao macro chifa trong file Trong Excel 2007, ché d6 an toan cé khac do nhiéu thanh phan hon va giao dién cling khac so véi Excel 2003. Dé cai ché d6 an toan, ban chon Excel Options ti nut Office Button (nut hinh tron to phia trén, bén trai cla civa 86 Excel 2007). Sau dé, chon menu Trust Center trong civa sé Excel Op- tions (hinh 5-5a), tiép tuc chon muc Trust Center Settings... Tiép theo ban tuy chon nhiing cai dat trong civa sé Trust Center (hinh 5-5 b). Ban sé thay ngoai macro, Excel 2007 con thiét lap déi voi ActiveX, Add-ins, Message Bar... Cai dat mac dinh trong Excel 2007 la toan b6é macro khdng hoat déng, néu ban dinh chon muc nao thi hay bd danh dau trong hép kiém tra. Ban co thé cai dat chi tiét tai cc muc khac. Trusted Publishers Macro Settings Trusted Lo I For macros in decurnents not i Developer Macro Settings ore. | Teast Centers (b) Hinh 5-5: Menu Trust Center va cdc menu chifa trong Trust Center O ché dé cai dat méc dinh, khi ban md file co chiva macro, Message Bar hién ra canh bao vé an toan. Khéc voi Excel 2003, tuy cai dai khong cho macro hoat déng nhung Excel 2007 van cho phép hoat déng tré lai khi ban 53 0 Option trong Message Bar, sau dé chon nut Enable this content trong civa sd Microsoft Excel Security Options (hinh 5-6). Ngoai ra, ban cé thé thay d6i cdc mac dinh khac khi b4m vao Open the Trus Center. Nhtrng virus dé cé kha ¢ VB . bo. cungl [Con | Review Home © Inter Gioi tinh N Nam “3. Trén Van Binh Nam 4. Nguyén Thanh Hoa Nie No @ * Security Alert - Macros & Activex Macros & Activex Macros and one or more AcbyeX controls have been disabled. This active content might ity hazards. Co not enable this content unless you trust contan viruses or other secu the source of ths fle. Warning: It is not possibie to determine that this content came from a trustworthy source. You should leave this content disabled unless the content provides critical functionality and you trust its source. More information Fle Path: 0:\PTH\Bsigiong\WBAlVBA.bo_sungixs © Heb protect me from unknown content (recommended) ©) Enable this content eTrust Center Hinh 5-7: Diéu khién dé macro hoat déng trong Iya chon Enable this content 5.2- Ste dung cdc chwong trinh diét virus Hién nay virus macro trong Excel phan lon cé ngudn géc tr nude ngoai g v6 hiéu chive nang canh bao trong Excel. Vi vay, 5A vie nh&n biét file Excel co bi nhiém virus khdng thi khdng phai don gian pau tién ban vao menu Tools/Macro va chon Macros... (hinh 2-4). Trong ctra s6 Macros ban tim xem cé thd tue nao fa trong danh sach macro hay khong? Néu cé thi tyc no la ma ban khéng thé stra (néit edit bi mo) hay xoa dug (nut delete bi md) thi dé co thé [a virus. Ngoai ra, con mét so virus gure xay dung bing Macro4 trén bang tinh cling gay nhiéu phién toai. Thong thong Cac bang tinh chia virus d6 dé 4n va dé kidm tra, ban vao menu For- mat/Sheet rdi chon myc Unhide. Néu thay sheet nao c6 néi dung la thi xoa di, dong thoi ban xoa file khdi dong trong thu muc XLSTART, Phan l6n cae chuong trinh diét virus cla nud ta hién nay khéng phan pigt duoc virus théng thudng va macro duge xay dung trong VBA. Vi dy nhu chuong trinh BKAV hoac D32, day la hai phan mém diét virus rat phé bién & dung mién phi. Néu khéng than thi cac trong nuéc va duoc phep chuong trinh quét virus nay sé xoa bd toan bé ma: ro ma ban xy dung trong VBA. Khi dé, nhing tng dung cé st dung VBA sé khong str dung duoc niva é cdc macro duoc an toan khi str dung chwong trinh BKAV, cdc ban luu y nhing van dé sau: - Khi khoi dong chuong trinh quét virus BKAV, clra so BKAV hién ra nhw hinh 5-8. Khéng duoc chon muc Xoa tat ca macro va muc Diét khong can hdii - Trong qua trinh quét virus, BKAV sé lam tong cac macro ctia ban lap ra la m6t con virus nao dé (vi du nhw WX97Macro.New nhu hinh 5-9). Neu ban chon Yes thi toan bé macro sé bi xoa. Trong trudng hop do, ban chon No. Néu chang may bam vao Yes, ban co thé phuc hii lai cdc macro bang chirc nang “Sao lvu truéc khi diét” 6 dudi. Tree khi virus trén file, thi cac file nhiém virus sé duoc sao lu lai trong thu muc C:\Program Files\Bkav2006\Backup (hodc dugng dan do ban cai Bkav) dé dé phong trvdng hop rdi ro. Qua trinh sao luu sé khong dién ra khi dung Iuong con tréng cia 4 clng chtra thu muc backup nay nhé hon SOMB. Sau 15 ngay, cac file sao lu nay sé tw déng bi xoa di dé tiét kiém cho dung lwong 6 dia. Vi vay, néu chang may cac churong trinh trong VBAProject bi xod thi ban phai phuc héi ngay, tranh trvong hop vuot qua thoi gian Iuu gil? trong thy muc backup. Ndi tom lai, ban khong nén ban thuong xuyén stv dung VBA trong céng viée, ma ste dung cac chong dung cdc chong trinh didt virus trén khi trinh diét virus cia nuéc ngoai nhu Symantec antiVirus hay AVG Antivirus, .. Cac chuong trinh nay cé kha nang phan biét rat tot gidva virus va macro tron¢ VBA. Néu file Excel cla ban co ca virus macro va macro trong VBA thi cac chuong trinh cac chuong trinh quét virus trén sé quét sach virus macro do Dv an VBA ctia ban van an toan. Profession: an | hate | poh [ veusLot | LiveUpdate | Bboauién | ountheu | tren é ate chee bid le - Lis chan hie (© Theb Becca v8USE @ Fle chuong unk FP Digtehtng ofa hi © Chon 8a he thing F Flevinblo I Seo hnutudekli det © Chon ida 6 ote Nop hi hadi 26a © Chan thu mye Enalsh intetace 01995-2006 Nouyén Ta.Quing rus Professional Vieuade ohm vitae WHS7MacIO Bon co nuén det khong ? 6 | © 9962006 noupén 16 auing GB V2 9% Hinh 5-9: BKAV [am tung macro trong VBA Ia virus Chuong 6 uu, WHUge oIEM CUA cHie HANe TU CHI MACRO 6.1- Wu diém cia chive nang tw ghi macro ro ghi lai nhing gi ma VBA thuc hién la cach thudc tinh tre Nang nay ho Chure nang Record M. hoc rat hay, git cdc ban cé thé nam bat dug cac ctia nd, nam duge trinh ty cdc bud é tro tich ce nhieng ngudi moi bat dau tim hiéu vé VBA. Ban co thé ghi lai mot sé cong viéc, sau dé xern lai nhiéng ma lénh dug ghi va tim hiéu chtre nang cla ching Ngoai ra, voi mt s6 céng viéc néu khong sw dyng chtre nang ghi macro thi rat khé thy hién, tham chi khdng thé thue hién ndi. Vi du nhw trvdng hop thi tuc sp xép lai danh sach theo thty ty tang hay gidm dan. Néu stv dung chtrc nang Sort cia Excel bang VBA thi sé rat khd, vi co nhiéu thong tin phai xt ly. Nhung voi chtre nang tu ghi, ban cd thé dé dang tao ra thi tuc thuc hién céng viéc trén bang cach ghi lai viéc thi hanh chtre nang Sort trong Excel. Két qua thé hién tai Hinh 6-1, Hinh 6-2 va Hinh 6-3. Ngoai ra, con trong hop nhw xay dyng va hiéu chinh biéu dé trong Excel, ban bat budc phai str dung chic nang ty ghi macro. ri tinh| Tua ascending © Descending a5 ascending Ot header row (oes) Cicwee Hinh 6-1: St’ dung chive nang ghi macro dé sap xép lai danh sdch trong "A18:C33" 57 7 by Phan tu sslection.sort Keyl:=Rangs ("ALE"), Header!="1lGuess, orde! Orientation: =xLToprorot Range ("19") select End sub Range ("A17:033° } . Select | Hinh 6-2: Macro Sap_xep durgc ghi lai véi cdc ma lénh trong viéc sip xép Gidi tinh __War Narn Nam [Hing Nam Horna Nam_| Khanh Nam _ Nam Ni Narn Nam Nam Hin 6-3: Két qua sap xép lai theo cat ™ - 6.2- Nhwoc diém cla chive nang ty ghi macro Ngoai nhi¢ng wu diém nhu da dé cp trong cac muc trén, chirc nang ghi macro cé nhiéng han ché nhat dinh. Vi du, ban sé khéng thé lay duoc ndi dung hay xac dinh mau trong 1 6, khéng thé so sanh gia tri gira cdc 6, khong tao dugc ham riéng, bang chwrc nang ghi macro. Nhu vay, néu ban chi su dung churc nang tu ghi macro thi sé con nhiéu han ché. Dudi day !a danh sach nhiing céng viée ma chive nang ghi macro khéng thé ty thyc hién dugc: - Cac kidu vong lp (Do... Loop). - Cac kiéu hanh d6ng theo didu kién (st dung If... Then) 58 - Khai bao kiéu gid tri cho bién - Gan gia tri cho bién. _ Xt ly va chuyén ddi gitva cdc kiéu dif liéu. _ Hién cdc théng bao giao tiép voi ngudi siv dung (Pop-up Messages). - Hién cac hép thoai diéu khién (Dialog Boxes) - Tao jién két ty déng voi cac chyong trinh khdc trong méi trong Windows,.. Nhu vay, bat budc ban phai bé sung ma lénh VBA vao trong macro hay phai xay dung mét macro mang tinh déc lap dé thyrc hién nhtrng bai toan phic tap hon. Khi dd, vige stv dung chirc nang ghi macro thuan tuy tro nén khong hu dung niva. Tuy vay, khong co nghia la chtre nang nay da mat tac dung ma nguge lai, no van song song hé tra tich cue cho ban trong con avéng chinh phuc VBA day gian nan va vat va Trong cdc chirong dui day, ban co thé kham pha dug nhiéu kién thir vé ngén ngi lap trinh VBA Chu y hai thuat ng VBA va VB trong mot sd trong hop duos st’ dung ding nhw nhau, vi déu cé thé déng thoi st dung trong VBA hay VB. Ching chi khac nhau 6 mdi trvdng va d6i tong lam viée. Nhing kién thtrc nay déu bé ich cho nhting ai dang nghién clru ve VBA hay VB Chuong 7 NGON NOU VISUAL BASIE FOR APPLICATIONS 7.1- Cac déi twong (Objects) Visual Basic hay VBA la ngén ngt lap trinh hudng déi tugng (object-oriented). Diéu dé cé nghia 1a cac thanh phan trong Excel cé thé coi la cdc déi tuong dé ban diéu khién, can thiép t6i. Béi tong chinh la workbook, worksheet, 6 va khdi 6 (vung) trong worksheet, biéu dd, thanh céng cu,... ma ban sé gap trong mét sé vi du vé diéu khién trong Excel. Tat ca cac déi tueng trong VBA dug t6 chirc theo hé théng cap bac. Vi du Excel chinh la déi tung Application, day la déi tong lon nhat. Bdi twong Application co chia cae déi tong khac nhu cdc workbook hoae nhiing thue don lénh. Nhieng thay déi xay ra trong déi tong Application anh hung dén toan bé néi dung trong tng dung. B4i tvong Workbook c6 thé chtra cac déi tuong worksheet hoac cac biéu dé (Chartsheet). Con lam vige déi v6i cde déi tong giéng nhau thi sao? Néu ban m& mot workbook mdi va lam viée trén cc worksheet, ban sé khéng thay duoc Su’ khac biét gitva cac worksheet dé. Nhém olia nhiing déi tweng giéng nhau duge goi la tap hop (collection). Vi dy nhw tap hop worksheets bao gém toan 66 cae worksheet trong Workbook jién quan. Tuy c6 cac diéu khién giéng nhau nhung tap hop (collection) kh chi la don Ié nhung tap hop thuong la sé nhidu (thém dudi s 6 sau). Vi du Workbooks, Worksheets la mdt tap hop clia cde workbook, worksheet G7 déi tugng (object). Déi tuong co thé Bé dé hinh dung, chung ta co thé lay mét vi du nhu: mét chiéc xe may ctia Honda, c6 thé coi {4 mét ddi tong. Honda cé nhiéu ching loai xe may nhu Future, Future il, Future Neo, Super Dream, Wave 100, Wave RS, Wave a, Wave a+,... Vay, ta cd thé xem xe may cla hang Honda la mét tap hop (collection), tap hop nay 66 cac déi tyong cling nam trong mét nhém nhw Future (g6m Future, Future II, Future Neo), Wave (Wave 100, Wave RS, Wave o, Wave u:+), 60 Bang 7-1: M6t sé déi tong chinh trong Excel poi tuong- Application | Chinh 1a ting dung Excel, ehtta toin bd cae doi wong bén trong né Workbook | Worksheet Range 1a 6 don k Charater 1a ky ty don | Hinh 7-1: Biéu d6 cac déi tugng trong Excel Muén diéu khién déi tuong Range, ban phai tao tham chiéu dén no. Dé 06 tham chidu dén dugc déi tugng Range, bat dau tl vj tri dau tién cla biéu dé va thyc hién theo cac dong phia duoi. Dau cham Ia ky ty durong dan toi cap déi twong khdc. Voi cach dé, khi tham chiéu dén déi twong Range, ban sé tao tham chiéu theo thir ty nhu sau: Application.Workbook.Worksheet.Range Théng thudng cdc déi tweng ma ban str dung dau ndm trong déi tuong Application nén cé thé bé qua déi tung Application (vi du cau lénh & trén co thé rut ngan thanh Workbook.Worksheet.Range) Vi du vé cdc déi tung va tap hop nhu sau Application. Workbooks tham chiéu dén tat cd workbook dang mé trong Excel. Workbooks. !tem(1) tham chiéu dén workbook dau tién va duoc goi tat la Workbooks(1). Workbooks("Baigiang.xIs”) sé tham chiéu dén workbook tén do. Workbook thuong chtra cac worksheet, trong méi worksheet dé chtra nhiéu 6 (cell). Ban cé thé tham chiéu dén 6 B3 nhu sau Workbooks(“Baigiang.xIs”).Worksheets(“Sheet1”).Range(“B3”) Sheets [a tap hop cac déi tugng Worksheet va Chart (biéu dd) trong ActiveWorkbook. Sheets("Year2006") sé tham chiéu dén ddi twgng sheet co tén la Year2006. Charts(1) sé tham chiéu dén déi tong Chart theo thir ty tab (1 la dau tin). Workbook dugc kich hoat thi dug goi la ActiveWorkbook (con goi la hién hanh), worksheet nao dang duge kich hoat thi duc goi la ActiveWorksheet. Néu co vai worksheet dang cling hién thi trén man hinh, worksheet nao dang c6 chuét & trong no thi dugc kich hoat. Néu ctra sé. Excel cé vai workbook dang hién thi, workbook nao dang chtva worksheet duoc kich hoat thi duoc goi la AvtiveWorkbook. Néu ban khong mudn the hién riéng trén workbook hay worksheet nao, VBA sé thie hién trén ActiveWorkbook hay ActiveWork- sheet (mac dinh). Con néu the hién trén déi twgng nao dé theo y mudn, can c6 dong dan cu thé nhu 6 trén. Theo théng ké, Microsoft Excel c6 hon 100 ddi tugng. Bang dui day 1a nhting déi tong co’ ban trong Microsoft Excel theo su phan cdp tir lon dén bé. Méi d6i tng cé doi séng riéng clia nd. N6 c6 nhiing dc diém ma ta goi fa thudc tinh (properties) va nhteng chtrc nang riéng biét ma ta goi !4 phuong Ap riéng tai thtrc (methods). Cac déi tung chinh trong Excel sé duoc dé Chuong 8 7.2- Cac phwong thtrc (Methods) Phuong thc fa mot dang chwong trinh gA thurc hién mot hay nhiéu hanh dong. Phuong thtec khong tra vé g ia tri nur 62 thude tinh. Ban khéng thé gan gia tri cho phuong thtrc nhung cé thé truyén 5 (tham sé). Méi diéu khién c6 nhOng phuong thc khac nhau, nhung van cé phuong thtre rat thong dung cho hau hét cac diéu khién. Ngoai ra, phuong thie cé nhing tham so lwa chon riéng dé chi dinh hanh dong nh thé nao. Cac phurong thc cé thé dug coi [a déng tl. Néu phuong thtre khéng c6 tham sé thi cll phap nhu & dui day: Object.Method Cén néu phwong thirc cd cac tham s6 thi cd phap nhu sau Object.Method (argument1, argument2,..., argumentN) Déi tong Range cé rat nhiéu phuong thire, didi day la mét s6 phuong thae chinh thuong str dung. - Phwong thirc Select Phuong thirc Select diing dé chon mét khoang nhiéu 6 (giéng nhu thuc hién béi den trong Excel). Vi dy sau day chon ving "A1:A12" cia worksheet dang hoat déng (active) Range ("A1:A12") .Select Chui y rang true khi chon mét ving thudc worksheet nao dé thi phai lam worksheet 46 duc kich hoat trudc. Néu khéng, dong lénh trén sé chon mét vung trong worksheet nao dé dang kich hoat ngoai y muén, hoaic cé 151 xay ra néu VBA khéng xac dinh déi twgng chon. Vi du dé chon ving "A1:A12" trong Sheet1 thuéc Bosung.xls, ban the hién cac dong lénh sau Workbooks ("Bosung.xls").Activate 'Kich hoat workbook Bosung.x1s Sheets ("Sheet1") Activate ‘Kich hoat sheet Sheet1 Range ("Al:A12") .Select "Chon vung A1:A12 Tai dong lénh tht 2, cé thé thay phwong thc Activate bang phuong thir Select. Phuong tht'c Select khng thie hién dugc voi déi twgng workbook. Ngoai ra cé thé chon due nhiéu ving cling mét lic bang phuong thivc Select. Vi dy nhw dé chon vung "C2:D5" va "G10:K20", ban str dung doan ma sau: Range ("C2:D5, G10:K20”) .Select 63 - Phuong thive Copy va Paste Ban c6 thé sao chép hay dan trong VBA bang cach ding phyong thir Copy hay Paste. Phuong thie Copy duoc ap dung cho déi tvong Range nhung phwong thir Paste thi dung cho déi twong Worksheet. Vi du dudi day sé sao chép ving “A1:A12" va dan tai vi tri 6 C1 Sub CopyRange () Range ("Al:A12”) .Select Selection.Copy Range (“C1”) .Select ActiveSheet. Paste End Sub Vi dy trén dug ghi lai khi thao tac boi chtrc nang Recorder Macro. Ban cé thé viét ngan lai nhu sau Sub CopyRange () Range (“A1:A12”) .Copy Range (*C1”) End Sub Ban co thé tim hiéu sau hon vé hai phuong thire nay trong phan Help. - Phuong thive Clear Phuong thtrc Clear xéa toan ndi dung, dinh dang, ghi chu (comment) trong mét ving xac dinh, tra vé mac dinh ban dau. Vi du ban muén xéa ndi dung va dinh dang cia c6t D 6 worksheet hién hanh thi dung Columns (“D:D”) .Clear Ngoai ra, ban co thé Iva chon cac phuong thir chi tiét hon - ClearContents: chi x6a noi dung ving Iya chon. - ClearFormats: x6a dinh dang vung Iva chon. - ClearComments: xoa ghi chu trong 6 - Phuong thtrc Delete Phuong thirc Delete ding dé xoa toan b6 déi tong due chon. Khac phyong thu Clear chi xoa ndi dung va dinh dang nhung van gid r vung lwa chon, con phuong thive Delete lam bién ma uyen At han vung lwa chon dé 64 va Excel sé ty dong dura cdc 6 nm bén duoi khodng nay lén (hay ttr bén phai sang bén trai) dién day vao khoang viva bi x6a Rows ("6:6") .Delete Khi xda mét khoang cht khdng phai la x6a han mét hang hay mat cot, Excel can biét ban muén di chuyén cac 6 con lai vao dién day cac 6 viva bi x6a theo hinh thire nao. Vi du sau khi xa khoang C6:C10, Excel sé di chuyén cac 6 bén phai qua bén trai Range ("C6:C10") Delete xlToLeft Trong vi du trén, xIToLeft la hang sé cho phyong thire nay. Ban cé thé tim ra cac hang sé khdc bang cach ghi lai theo tac ban thu hién. Vi du - xIDown: Hang sé dé chuyén xudng dudi - xlToLeft: Hang sd dé chuyén sang trai - xIToRight: Hang sé dé chuyén sang phai. xlUp: Hang sé dé chuyén lén trén. Tuy nhién, c6 mét sé hang sé ma ban khéng thé str dung duoc trong diéu kién cu thé. Nhu 6 vi dy trén, néu thay xIToLeft bang xIToRight thi khong dwg vi khéng thé di chuyén 6 theo kiéu nay. Con déi voi phuong thtre cé tham sé nhw GoTo thi ct phép nhw sau: Object.GoTo (Reference, Scroll) Phuong thtrc GoTo giup ban nhanh chéng chon cac khéi 6 (ving) trong workbook. Tham sé Reference chi ra 6 hay khéi 6 tham chiéu dén. Néu tham s6 Scroll dat la True thi man hinh sé due cudn (ving chon sé nam & phia trén bén trai cla $6), con néu dat la False thi man hinh sé khéng due cudn (ving chon sé nam 6 phia duéi bén phai cla sd). Vi dy ban st dung VBA dé chon 6 P100 trong Sheet va cuén man hinh nhu sau: Application.Goto Reference orksheets(“Sheet1”) .Range(“P100"), Seroll:=True (cing 1 dong). Déi twong Workbook cé phurong thtrc cé tén la Close. Ban cé thé dong cac workbook khi str dung phtrong thie nay. Néu cé sw thay dai trong cdc work- book dé, Excel sé hién thi thong bao vé viée cé Ivu nhiing thay déi hay khong? Ban cé thé str dung phwong thtrc Close véi tham sé SaveChanges 43t thanh False (mac dinh la True) dé dong workbook d6 va bé qua nhting thay déi trong n6, vi du nhu & dudi day: 65 Workbooks (“Chapter01.x1s”) .Close SaveChanges :=False 7.3- Cac thudc tinh (Properties) Méi déi tong déu cé cac dac diém riéng va duc goi la thudc tinh (hay dac tinh). Thuéc tinh tra vé gia tri duo’c thiét lap sn trong Excel hoac do ta khai bao. Thong thueng thudc tinh diéu khién hinh dang va vi tri xuat hién cla déi tong bang cach gan gid tri cho thudc tinh Vi du nh dong ché trong mot 6 c6 thé dug canh |e trai, phai, trén, du6i, t6 mau nén, dudng vién,... Dd chinh la cdc thuéc tinh cua ddi tong Cell Déi voi déi tong Range, mat sé thudc tinh dac trung nhu Font, Formula, Text, Value, Name, Row, Column, ColumnWidth. Cac gia tri thuéc tinh cla déi twong c6 thé due dat theo y mudn nhuing chi co mot gia tri riéng trong mét thoi diém. Vi du nhw workbook dang kich hoat khong thé c6 hai tén tai mot thoi diém: Thudc tinh cé thé dug coi nhu Ia tinh tir va duge thiét lap stv dung trong cau Iénh nhu' sau object.Property = Value hay Noun.Adjective = value Vi du vé gan gia tri cho 6 dang duge kich hoat ActiveCell.FormulaR1Cl = “Nguyen Van Hung” Range("C3").ColumnWidth = 14 sé thiét 4p chiéu rong cla cot chia 6 C3 rong 14. Excel mac dinh chiéu rong ctia cot la 8,43 diém (point) Phan kho nhat la tim hiéu duge su kién nam ngoai thuéc tinh cla cac déi tong. Vi dy nhu voi déi tveng Range, ban c6 thé thay déi kiéu font cht cila ving chon bang dat thudc tinh Font. Nhung Font cé thudc tinh Name voi cac tén khac nhau (Time New Romand, Arial,...), thudc tinh size voi co cht khac nhau (10, 12, 14,...) va cdc kiéu thudc tinh khac nhau (Bold, Italic, Un- derline,...). D6 chinh Ia nhing thudc tinh cla Font. Néu Font co cac thude tinh, Font cling dug coi [4 déi tugng Range(*B4”).Select Chon 6 B4 dé lam viéc Selection.Font.Name = “Times New Roman” ‘Dat Font cho 6 B4 Selection.Font.Bold = True ‘Cho chir dam Selection.Font.Size = 10 ‘Cho cé chir 1a 10 Chiing ta sé tim hiéu chi tiét hon vé mot sé thudc tinh hiru ich cua déi tuong Range trong muc 8.5.1 va 8.5 12. Chuong 8 MOT SO 001 TUONG CO BAN TRONG EXCEL Nhu Chuong 7 da dé cp, Excel chtva nhiéu adi tung 6 bén trong. Méi déi tong C6 tén, thudc tinh va phuong thive thuc hién khac nhau. Cac déi tugng co sy quan ly theo dang phan cp, ttc la déi tuong l6n chia cac déi twgng bé, déi tuong bé chia cac déi tong bé hon,... Ban co thé stv dung VBA dé truy cap dén tung déi twgng, thay ddi thudc tinh cling nhu diéu khién chung bang phuong thc. Cac déi tugng phé bién thudng gap [a Application, Window (Windows), Workbook (Workbooks), Worksheet (Worksheets), Range va Cell, Day la nhGing déi tvong thuong xuyén dugc stv dung duoc dé cp riéng & chong nay. Trong qua trinh thy hién, ban c6 thé co duoc sy tro’ gip true tiép khi bam phim F1 tai ctva sé VBE hoac trong Microsoft Visual Basic Help 8.1. Déi twong Application Nhu da gidi thiéu trong Chuong 7, cac déi twong duoc té chire theo cAu tric dc biét, duoc goi Ia déi tong va tap hop. Déi tong ion nhat chinh la tng dung Microsoft Excel (the Excel Application), goi tat 1 Application. Déi twgng Application la dai dién cho toan bé tng dung ctia Excel va la méi trudng lap trinh VBA. Dé diéu khién déi twgng Application, ban cé thé thi hanh nhiéu thao tac. Viée tac dng Ién déi tuong Application sé anh huéng tryc tiép dén toan bd déi tung 6 bén trong Vi du nhu, Excel cho phép luu nhiing cai dat cla man hinh bang cach sl dung Save Workspace tir menu File. Thao tac lwu gitr ving lam viéc (workspace) co thé thy hién dé dang voi VBA Application.SaveWorkspace “Bai tap” Doan ma lénh trén sé Ivu git nhieng cai dat clla man hinh trong ving lam viéc voi tén la “Bai tap”. Sau do ban can lam viéc voi ni 9 file twong ty thi don gidn nhat la mé file “Bai tap", Excel sé dua lén nhtng file hiéu chinh va phuc hi ctva sé ctia ban dang lién két. 67 Bang 8-1: Xac dinh m6t sé thong sé céa ng dung (Application) du lénh trong Immediate ?Application, Name Application. Caption Phan mem” ation.Caption = "Microsoft Application. Operatiny 2 Application Path system Xdc dinh tén ca tng dung dang kich hoat ng dung Excel thanh "Phan mem" DOi tieu dé cia Hign ra hé diéu hanh dang sit dung Hién ra dudng din cita Excelexe Thoat ra khoi tmg dung (thodt khéi Excel) Ngoai ra déi tugng Application cdn cé mét sé thudc tinh hiru ich sau: 8.1.1- Thu6c tinh Calculation Color International View | Caleulation Caleuletion Automatic xcept tables Cteration Maximum iterations: {100 | Workbook options [update remote references (lerecision as displayed (71904 date system Hinh 8-1: Emor Checking Spelling Custom Lists security Transition Chart fore save Maximum change: 0.001 [2] save external nk values [7] Accept ates in formulas ita s6 Options cua Excel Khi lam viée véi bang tinh cé nhiéu cng thive tinh toan, viéc thay ddi sé ligu dau vao si 5 lam thoi gian tinh toan tai dang ké. B rat ng&n thoi gian tinh ton, ban str dung thudc tinh Calculation trong cau lénh dudi day & dau mot tha tuc: Application.Calculation = x1CalculationManual Dong lénh trén c6 tac dung lam tam thoi dng tinh todn trong Excel. D& Excel lam viéc binh thuong thi & cudi thi tuc ban dleng quén dong lénh sau: Application.Calculation = x1CalculationAutomatic Dong Iénh trén khéi phuc ché dé tinh toan ty dong ctia Excel khi tht tuc da thu hién xong. Hai dong Iénh trén lam thay adi ché d6 tinh todn trong menu Options/Calculation (hinh 8-1) 8.1.2- Thuéc tinh ScreenUpdating Trong qua trinh tinh ton, ctva sé man hinh Excel luén duge cap nhat lai gay hién tong kh6 chiu (nhap hay). Khi dé, ban str dung thudc tinh ScreenUpdating vi dong Iénh & dau va 6 cuéi thi tuc Application. ScreenUpdating=False ‘Huy cap nhat man hinh Application.ScreenUpdating=True ‘Khéi phuc cap nhat man hinh Cling nhu déi véi thuéc tinh Calculation, thudc tinh ScreenUpdating gitp bang tinh cdia ban tinh toén nhanh hon. 8.1.3- ThuGc tinh DisplayAlerts Khi lam viéc trong Excel, ban thudng bat gap nhiing thong bao ty déng nhu “Do you want to save this file...”, “Data may exist in the sheet(s) selected for deletion..." khi thc hién mét sé céng viéc nao dé. Diéu dé gay can tro ¢én su hoat d6ng lién tuc cia tht tuc bang cach yéu cdu ban phai xac nhan lai hanh dong. Thudc tinh DisplayAlerts sé gidp ban diéu khién ché ¢6 tu déng théng bao. Ban hay sty dung hai déng lénh 6 duoi day 6 dau va cuci thu tuc: Application.DisplayAlerts=False ‘Huy bé théng bao tu déng cla Excel Application.DisplayAlerts=True ‘\Khéi phuc théng bao ty déng cia Excel Vi du vé cach xoa Sheet3 ma khéng bi théng bao ty dong cia Excel: Sub Xoa_Sheet () Application.DisplayAlerts = False Sheets ("Sheet3”) .Delete Application.DisplayAlerts = True End Sub Ngoai ra, ban con gap mét sé thudc tinh khac dugs str dung trong cac vi du 69 8.2- di tuong Window Déi tong Window dai dién cho clra sé tng dung hién thi trén man hinh Nhiing dac trung cia worksheet nhu thanh scroll bar, lui 6 la nhirng thuéc tinh ctia clra sé dé. Déi tong Window la mét thanh phan trong tap hop Win- dows. Tap hop Windows ctia déi twong Application chtra toan bé cac cla sé. trong ng dung, nhung ngugc lai tap hep Windows ctia déi tweng Workbook chi chtra nhtng clra sé trong workbook dug chi dinh. Window nao dang lam viéc (chtra con chudt) thi duoc goi ActiveWindow. Khi lam viéc voi mét sé workbook, néu ban can so sanh hoac hop nhat di ligu hay muén nhin thay cdc workbook dang mé, ban str dung phuong thc NewWindow, Arrange. Bang 8-2: Xdc dinh m3t sé théng s6 cua ng dung (Window) Au én trong Immediate Thue hién ActiveWorkbook.NewWindow — Hien workbook duge kich hoat trong cita s6 mdi Windows. Arrange Windows(1).DisplayGridlines= False Windows(2).Activate ?ActiveWindow.Caption 2ActiveWindow. Actives| Name ActiveWindow.Windor xl Normal ‘Active Window.Caption = "Vidu" Hien toan bo workbook dang mt hinh Khong cho hién luéi 6 tai cla sé thé nhat. Kich hoat cita sé Window the hai, Xéc dinh ten eda’ cua sé Window dang kich hoat. Xe dinh tén cba sheet hién hanh trong ActiveWindow Thay déi kich e@ ctta sé cla ActiveWindow nhu xINormai (binh thudng), xIMaximized (16n hét eG), xIMinimized (nhd hét ca) Béi ten cia cita sé Window dang kich hoat thanh "Vidu" Truong hop lam viéc voi cac ctva $6 Window trén man hinh, ban co thé quyét dinh cach sap xép ching. Thuéc tinh Arrange voi mdt sd tham sé sé gitp ban thu hién céng viéc nay. Tham sé nay cho phép diéu khién kiéu vi tri cac ctra sé trén man hinh, kiéu sép xép do duoc goi la phuong thee ArrangeStyle. Néu ban bé qua phuong thc ArrangeStyle, céc ctra 86 duoc sp xép kiéu lién ké (kiéu mac dinh). 70 Bang 8-3: Cac kiéu sap xép trén civa sé Window Hang so Gia tri Mota xlArrangeStyleTiled 1 2ée eta 86 sip xép mac dinh lién ké xlArrangeStyleCascade 7 Cae cita s6 sip xép theo kiéu tang xlArrangeStyleHorizontal 2 ap x€p theo hang ngang xlArrangeStyleVertical 3 Cac cifa 86 sip xép theo hang doe Tiled Horizontal Vertical Cascade Hinh 8-2: Cac kiéu sip xép trén cia sé Window Ngoai cach stv dung gia tri hang sé trén dé sap xép kidu ctva 8 thé st dung gid tri twong ung. Vi du dé sép xép cac ctva sd theo ban viét doan ma lénh VBA sau: Windows Arrange ArrangeStyle:=xlArrangeStyleCascade hoae: Windows Arrange ArrangeStyle:=7 8,3- Ddi twong Workbook Nhu cac ban da biét, Workbook la déi tuong quan ly, luu tri cac worksheet. Bdi twong Workbook dai dién cho workbook trong Excel la mat thanh phan trong clla tap hop Workbooks. Tap hop Workbooks chiva toan bo cac déi tugng Workbook hién dang duoc ma trong Excel Lam thé nao ban diéu khién workbook? Ban khéng thé lam viéc trén worksheet néu ban khéng biét cach mo workbook moi. Ban khong thé dong workbook trén man hinh néu khéng biét cach thye hién. BS thc hién cac ©6ng viée trén, ban sty dung hai phuong thie cla VBA, dé 1a Add va Close Méi cdc ban xem bang dudi day: 71 Bang 8-4: Lam viéc véi déi twong Workbook Cau lénh trong Immediate Thue hien Workbooks.Add Thém mot workbook méi. 2Workbooks(1).Name Xie dinh tén workbook dau tién 2Workbooks,Count Xde dinh s6 workbook dang md. Workbooks(2).Activate Kich hoat workbook thit hai (dang md). Workbooks("Baitap.xls").Activate _ Kich hoat Baitap.xls ActiveWorkbook SaveAs Luu workbook dang kich hoat v6i ten 1A Jename:="Baitapmoi.xls" “Baitapmoi.xls" Workbooks(1).Close Dong workbook diu tign e Workbooks, Close Déng workbook dang duye kfch hoat va khong luu nhiing gi thay déi Workbooks.Close Déng toan bo workbook dang mé. 8.4- Déi tueng Worksheet Worksheet fa doi twong quan ly, luu tir cdc 6, hang, cdt va cac déituong dd hoa nam bén trong (nhu cdc hinh duge tao ra trong Drawing hay diéu khién nam trong Form, Control Toolbox). D4i tong Worksheet dai dién cho worksheet va la thanh phan clia tap hop Worksheets. Tap hop Worksheets chwa toan b6 déi tweng Worksheet trong Workbook Nhu vay, cdc déi tung mang tinh phan cép, déi tuong nay chtva déi kia. Vi vay, mt s6 thu6c tinh, phuong thie cla déi tuong nay cling cé thé thyc hién duoc déi voi déi tugng kia. Sau day, chting ta tim hiéu vé cach 1 khién déi tweng Worksheet 8.4.1- XAc dinh cac théng tin trong Worksheet Ban c6 biét bang tinh Worksheet trong Excel lon nhur thé nao khong? Worksheet co bao nhiéu 6, cot va hang? Néu ban cé quén thi hay sty dung thudc tinh Count. Két qua thé hién & hinh dui. Bang 8-5: Xdc dinh cae théng tin trong Worksheet Iénh trong Immediate Thue hién ?Cells.Count Nac dinh ton bd 6 trong mot worksheet ?Rows.Count Xae dinh so hang trong mot workshe ?Columns.Count Xae dinh $6 cot 6 wong mot worksheet wale = 24 D2") Formulas "=Ks Hinh 8-3: Xac dinh cc théng s6 cua Worksheet va gan gia tri vao trong Worksheet 8.4.2- Nhap di? liéu vao trong Worksheet Nhirng dé ligu dug nhap vao worksheet 6 thé la chudi, s6 hodic cong thie, u vao 6 hoac khdi 6, ban cé thé st dung hai thuéc tinh cua Range. D6 chinh la thudc tinh Value va Formula. Str dung thuée tinh Value “= 4 * 25” ActiveSheet .Range(“A1:C4”) .Value Sw dung thuéc tinh Formula’ ActiveSheet .Range("A1:C4”) .Formula = “= 4 * 25” Trong ca hai vi dy trén, cdc 6 trong vung A1:C4 déu hién 100, d6 chinh la két qua cla céng the 4 x 25. Ban cé thé thay cong thire bang gia tri cu thé nhu bang 8-6. Bang 8-6: Nhap dé liéu vao trong Worksheet Cau lenh trong Immediate Thue hién Nhap va0 6 C2 chud Nhap s6 24 vao 0 AL Range("B2”).Formula= "=K5 * 4" Nhip vo 6 B2 cong thie: =K5 * 4 8.4.3- Diéu khién Worksheet Trong qua trinh lam viéc voi cdc worksheet, ban cé thé can bé sung thém worksheet mdi vao workbook, chon worksheet nao dé hoac mot nhom cla worksheet, ddi ten worksheet, sao chép, di chuyén, xoa worksheet... Mot s6 phurong thtrc trong bang dudi day sé gitip ban thyc hién cdc céng viée dé. 73 Bang 8-7: Diéu khién Worksheet Cau lénh trong Immediate Worksheets. Add po sung them worksheet m6i 2Worksheets(1).Name Xéc dinh ten worksheet dau tien Worksheets(3) Select Chon worksheet thi 3 Worksheets(Artay(1,3,4)) Select Chon ahom worksheet thir nhat, thit 3 va thi 4 Activate Kich hoat bang tinh c6 ten "Sheet!" Worksheets("Sheet? Chuyén Sheet? dimg truéc Sheet! Before:=Worksheet Worksheets("Sheet After:=Worksheets(1) Mor "Sheet!") Move Worksheets("Sheet2").Name= p6i ten Sheet2 thanb "BE 1" ’Worksheets.Count Xée dinh sO worksheet trong workbook. Worksheets.Add ‘Them 1 worksheet & cudi cling ong workbook After'=Worksheets(Worksheets.Count) ign bank Worksheets("Sheet4"). Visible = False Lam an Sh Worksheets(Aray('Sheet!", Lam dn Sh "Sheet4")). Visible = False hanh Worksheets("BT i") Delete 4 worksheet BT J trong workbook bign hanh 14 trong workbook higu hinh 1, Sheet trong workbook hign Nhu vay, ban sé thac mac vé cach sur dung phuong thirc Select va Activate, cd nhtng gi ging va khac nhau? Dui day la sy’ giong va khac xnhau gidra chting - Phuong thive Select va Activate co thé hoan déi cho nhau néu chi mot worksheet duge chon = Khi tin hanh nhom worksheet, phuong thirc Activate sé quyét dinh work- sheet nao trong nhém dug kich hoat. Nhu’ ban da biet khi lam viéc trong Excel, chi mot worksheet dure kich hoat tai mot thoi diém Trong bang 8-7 6 trén, thudc tinh Visible co tac dung lam hy vAn worksheet bang gia tri “True” hoac “False”, cong vi nay Ia can thiét khi ban khong muén ai do lam thay adi néi dung cia worksheet do nh bang tra, danh muc tigu chuan,... Tuy nhién voi cach nay, ngwoi kha van c6 thé phuc héi nhieng worksheet bi An bang cach vao menu Format/Sheet/Unhide (hinh 8-4). Nhu vay, lam thé nao dé an worksheet ma khong bi hién nhw tai hinh 8-4? Khi do ban phai str dung gid tr xlVeryHidden (siéu an) thay vi False. Vi du de lam siéu An Sheet1, ban ding cau Iénh sau Worksheets (*Sheet1”) .visible = *lVeryHidden 8 phuc hdi nhu ban dau, khdng thé su dung phuong phap Unhide Sheet théng thuong nhu 6 hinh 8-4 ma phai stv dung phuong phap khac nhw dong Jénh sau Worksheets (“Sheet1”) .Visible = True ‘Hién Sheet1 Ngoai ra, ban c6 thé go bé thudc tinh siéu 4n bang cach vao cia s6 VBE (trong truéng hop dur 4n khéng bi bao vé), chon déi tuong Sheet bi siéu an ya tim dén thuéc tinh Visible ctia ching. Gia tri cla thuéc tinh Visible nhu sau (hinh 8-5) - xlSheetVisible (hoac -1) Hign sheet duoc chon - xISheetHidden (hodc 0) An sheet dug chon. - xISheetVeryHidden (hoac 2) _: Siéu an sheet duoc chon Hinh 8-4: Danh sach cac sheet bi dn trong worksheet Properties ETc . 1 [Sheet1 worksheet Alphabetic [categorized | [(vame) "Sheet! DisplayPageBreaks False |DisplayRightToLeft False EnabledutoFiter False EnableCalculation True EnableOutlining False JEnablePivotTable False EnableSelection _0 - xlNtoRestrictions Name ‘Sheet! 8.1 (0 - xisheetHidden 2-xIsheetveryHidden J Hinh 8-5: Gan gia tri xiSheetVisibie cho thude tinh Visible cla Sheet 75 8.5- Déi twong khéi 6 (range) va 6 (cell) Dé lam viée voi déi tuong 6 hay khdi 6 trong qua trinh xt? ly hay tinh toan, VBA. giuip ban tham chiéu dén (chon) cac khdi 6 dé nhanh chong, thuan tién. Co nhiéu thudc tinh cé thé gitp ban thue hién cng viéc nay nhu Range, Cells, Offset, Rows, Columns... 8.5.1- Thu6c tinh Range Ban 6 thé stv dung VBA dé tham chiéu dén 6 hoac khdi 6 trong worksheet. Néu muén gan di liéu vao worksheet, ban sé phai stv dung dén thudc tinh Range. Thudc tinh Range sé tham chiéu dén 6, khdi 6 trong bang tinh. Kiéu tham chiéu khi st dung thugc tinh Range co dang A1 (tén cot va hang). Bia i 6 lun phai ndm trong dau ngoac kép (vi dy: “A1”). Ban co thé tham chiéu Gén khdi 6 khi st dung dau hai cham (vi du: “C3:G8") hoac tham chiéu dén tizng 6 riéng Ié khi ste dyng dau phay (vi du: "A3, C5") Bang 8-8: Su dung cac thudc tinh Range Cau lénh Thuc hién Range("BI").Seleet Chon 6 don BI Range("B1:B6").Seleet Chon khéi 6 tir BL dén BG Range("B2:B7, '4:K30").Select Chon 2 kh6i 6 B2 dén B7 va F4 dén K30 Range("C1, D2, G6").Select Chou 6 rieng 2, G6 Range("C:C") Select Chon cot Range("7:7") Chon hang 7 Range("D:G") Select Chon cot D dén cot G Range("2:6") Select Chon hang 2 dén hang 6 Range("2:2, 5:5, 8:8 Range("B:B, D:D, G: Chon bing 2, bi Chon eo B,D v3 Vi du: V6i workbook cé tén Popupmenu, trong worksheet Sheet1, ban gan néi dung “Truong DH Mo Dia chat” vao 6 B3. Sau do, cho néi dung ch do dam, nghiéng, mau dé va nén mau vang. Sub Thunghiem() Workbook (“Popupmenu.xls”). Activate Sheets (“Sheet1”) .Range (“B3”) .Select ActiveCell.FormulaR1Cl = “Trudng DH Mo Dia chat” Selection.Font Bold = True Selection.Font.Italic = True Selection. Font.ColorIndex = 3 With Selection.Interior ColorIndex = 6 .Pattern = xlSolid End With Range (“B4”) .Select End Sub Dé hiéu rd hon mét sé thuéc tinh da str dung trong thi tuc trén cla déi iwong Range, ban xem muc 8.5.12 Khi dung v6i kiéu khong xac dinh, Range tra vé mét day 6 trén sheet dang hoat déng. Dé tranh kiéu “Rau éng no cém cdm ba kia", ban hay kich hoat mt bang tinh bang phuong phdp Activate truéc khi ding thuée tinh Range ma khéng can chi ra gidi han cu thé. Dui day Ia cach dién vao ving “A1:H8" cc s6 ngau nhién bang cach dat cdng thtrc cho méi 6 trong ving ma trudc d6 Sheet! da dug kich hoat: Worksheets (“Sheet1”) .Activate Range ("Al:H8”) .Formula = “=Rand()” Ban cling cé thé dat tén cho ving va chi cho VBA tham chiéu dén tén nay. Vi dy, ban ra lénh xa ndi dung ctia mot ving c6 tén “Criteria” bang cach Worksheets (1) .Range (“Criteria”) .ClearContents Néu sty dung mét tham sé (argument) ma tham sé dé [a dia chi day 6, ban phdi dinh 16 dia chi do theo kiéu A1 (ding kiéu R1C1 sé bi bao Idi) Ngoai ra, ban cé thé thyc hién déng thoi déi voi nhiéu ving tach bidt nhau khi st dung phwong thre Union. Vi du vé su hop nhat gitva hai khéi 6 Range ("B5:C10”) va Range2 (“F30:H32") khi st dung phuong thtrc Union, nhéing 6 trong vung dé duge dién day boi céng thir =RAND() Dim Rangel As Range, Range2 As Range, Vung As Range Worksheets ("Sheet1”) .Activate Set Rangel = Range(“B5:C10”) Set Range2 = Range ("F30:H32”) Set Vung = Application.Union(Rangel, Range2) Vung. Formula = ‘=RAND()” Ghi chu: Ban cd thé ding ng Vi du [A1:A3].Select la cach chon khdi 6 giéng nh Range("A1:A3”) Select vuéng [] dé chon khdi 6 thay vi () 77 8.5.2- ThuGéc tinh Selection Thudc tinh nay tra vé adi twong duoc chon trong ctva sd duoc kic hoat (active window). Déi tuong dug tra vé phu thudc vao su Iwa cho" hién tai. Vi du nhw hién tai cac 6 dang dug chon, thudéc tinh Selection sé tra vé déi twong Range. Thudc tinh Selection sé tra vé Nothing néu khond co su Ilva chon. Vi dy dui day sé xo toan b6 néi dung dang duoc béi den trong Sheett- Worksheets (“Sheet1”) .Activate Selection.Clear Vi du tiép theo sé hién thi kiéu déi twong VBA dug chon. Worksheets (“Sheet1”) .Activate MsgBox “Kiéu déi tuong dugc chon 14” & TypeName (Selection) Hinh 8-6: Kiéu d6i tueng Range dang duc chon. 8.5.3- Thuée tinh Cells Thuéc tinh Cells st? dung ct) phap Cells (row, column) d mang la 6 don, Trong dé row la chi sé hang va column la chi s6 cot ctia 6. C™ sé cét (column) cé thé la sé thw iw cét hay Ia tén cla cét. Thuéc tinh cell? duo ting dung nhiau khi viét c&c vong fp gitra cdc 6. Ngoai ra, ban c6 th)? stv dung thudc tinh Cells theo tt 7 6 trong bang tinh (xem th 78 Bang 8-9: St dung thuéc tinh Cells ‘Cau lenh Thue hien Gells(5, 1) Select hoac Cells(S,“A").Select_ Chon 6 don AS Range(Cells(6,1), Cells(10, 1) Select Chon khéio AG:A10 Cells Select hoae Cells() Se Choa toan bd 6 wong sheet Dé tra vé gia tr} 2000 trong 6 B3 tai Sheet2 trong workbook hién hanh, ban sl dung cau lénh Worksheets ("Sheet2”) .Cells (3,2) .Value = 2000 Va gan mét céng thic cho 6 A2 trong worksheet hién hanh: ActiveSheet.Cells(2, 1).Formula = “=SUM(B1:B5)” Cho du cé thé ding thude tinh Range(“A1") dé tra vé 6 At (khong hé sail), nhung dling thudc tinh Cells thi tién loi hon bdi ban co thé str dung mét bién s6 dai dién cho hang hoac cét phuc vu yéu cau lp trinh. Ban hay tham khao vi du tao tiéu dé cOt va hang trén Sheet sau day. Luu y sau khi bang tinh 43 duge kich hoat, thudc tinh Cells c6 thé duge sir dung thoai mai ma khéng can khai bao mét Sheet cu thé nao vi né tra vé mat 6 trén Active Sheet. Sub SetUpTable () Worksheets ("Sheet1”) .Activate For theYear = 1 To 5 Cells(1, theYear + 1).value = 1990 + theYear Next theYear For theQuarter = 1 To 4 Cells(theQuarter + 1, 1).Value = “Q” & theQuarter Next theQuarter End Sub Khi str dung cil phap Expression.Cells (row, column), voi Expression 1a mot biéu thirc tra vé mét déi tong Range va row, column Ia vi tri trong déi So vOi géc trén trai ctia vung, két qua tra vé la mot bd phan ctia vung Trong vi du dui Gay, VBA chi dén Cells(1,1) ttec la 6 C5 trén bang tinh: Worksheets (1) .Rang.("C5:C10”) .Cells (1,1) .Formula = “=Rand()” 79 Ngoai ra, ban co thé két hop gitra Range va Cells dé tham chiéu dén mot vung. Ban hay str dung ci phap Range (Cell 1, Cell 2), voi Cell 1 va Cell 21a 6 bat dau va 6 két thiic cia ving. Dé dat kiéu dung vién cho cac 6 trong ving, ban dting lénh sau: With Worksheets (1) -Range(.Cells(1, 1), .Cells(10, 10)) .Borders .LineStyle = xlThick (ctng 1 déng) End With Ban cé thé sty dung cdc kiéu duOng vién khac theo y muén nhu xiContinuous, xlDash, xlDashDot, xlDashDotDot, x!Dot, xiDouble. xlSlantDashDot, xiLineStyleNone. 8.5.4- Thu6c tinh Offset Thudc tinh Offset thuong duoc ste dung dé tham chiéu dén 6 cé quan hé voi 6 tly chon. Thudc tinh nay gitip ban linh hoat trong céng viéc, dac biét di voi bang tinh cé nhiéu tham chiéu. Cong thre dang téng quat Offset (no_rows down, no_cols_to_right) no_rows_down la sé nguyén va duoc hiéu ta xuéng duoi bao nhiéu hang. Néu 6 gia tri am thi huéng nguoc lai no_cols_to_right la sé nguyén va duoc hiéu chuyén sang phai bao nhiéu cot. Néu cd gia tri am thi hueng ngugc lai Bang 8-10: Sw dung thu6c tinh Offset au lénh ‘Thue hién Range(“A1").Offiet(, 3),Select © D2 sé duge chon Range("D15").Offset(-2, -1),Select O C13 sé duge chon Chon 616 vi Acti . sang phai 1 edt so Vi du 1: Nhu & hinh 8-7, ia thiét 6 B1 1 6 hién hanh. Bay gio ban ding Offset chir trong 6 C2 cé mau dé, C5 dam, C8 nghiéng, C9 cé ndi dung “Xi nghiép khao sat dia ky thuat" d 80 Sub Offset () Range (“B1”) .Activate Xac dinh 6 kich hoat géc ActiveCell.offset(1, 1).Font.ColorIndex = 3 ActiveCell Offset (4, 1).Font.Bold = True AetiveCell.offset (8, 1).Value = “Xi nghiép khao sat dia ky thuat” (cing 1 dong) ActiveCell.Offset(8, 1).Font.Size = 12 Range (“E9”) .Activate’ Xac dinh 6 géc khac ActiveCell.Offset(-1, -2).Font.Italic = True End Sub nding dung ha tng Ha Néi n nghién cto dia kf thuat p Khao sat dja chat dng ty tw van Uidn Khai cng ngh@ v8 XO Md dia chal dng ty TNHH Nha mirc | thanh vién Khao sat va XD ty khai thac rd A dia kyu ‘ang nghié) y cd phan tr van va x! Hinh 8-7: Sr dung Offset dé tham chiéu dén cic 6 Trong khi lam viéc voi thuéc tinh Offset, cd tic ban thay déi kich co cia khdi 6 da chon. Gia dinh lc dau ta co khdi 6 chon la A5:A10. Lam thé nao dé dich chuyén khdi 6 chon xuéng hai hang va sang bén phai hai cét, sau do lam thay ddi kich c& ctia khdi 6 chon mai? Thudc tinh Offset chi c6 thé thue hién trong phan dau ctia thao tac, phan thi hai sé phdi sr dung thuéc tinh khac. Excel cd thude tinh dac biét tén la Resize. Ban cé thé phéi hop hai thudc tinh Offset, Resize dé thuc hién céng vide trén. Range ("A5:A10”) Select. Selection. Offset (2, 2).Select Selection.Resize(2, 4) Select Dong thi nhat phia trén sé chon khdi 6 “A5:A10", 6 AS 1a 6 kich hoat (active cell). Dong th 2 sé dich chuyén khdi 6 chon sang “C7:C12”. © C7 co vi tri cach 6 A5 2 hang phia dui, 2 c6t phia bén phai. Bay gi 6 C7 da kich hoat. Dong cudi cing Ia thay déi kich c@ cla khdi 6 chon. Thay cho khéi 6 “C7:C12", khdi 6 “C7:F8” dugc chon. Gidéng nhw thudéc tinh Offset, thuéc tinh Resize co hai tham sé. Tham sé cét. Nhu vay, dong tht ba & trén lam thay déi khdi 6 Ilva chon thanh 2 hang va 4 cét. Hai dong cudi cé thé ghép thanh mét dong nhu sau: thir nhat la s6 hang, tham sé tht hai ld sé Selection.Offset(2, 2).Resize(2, 4) .Select Trong vi du trén, thudc tinh Offset sé tinh toan chon khdi 6 chon méi, thu6c tinh Resize xac dinh kich c& moi cla khdi 6 va phuong thie Select sé chon (b6i den) khdi 6 dé. 8.5.5- Thu6ée tinh Rows va Columns CAp thuéc tinh Rows va Columns gitip ban co thé lam viéc voi toan bd hang hoac cot Bang 8-11: Su dung thuéc tinh Rows va Columns Cau lénh Thye hién Rows(4) Select Chon hing so 4 Rows.Select Choa todn bo bing trong sheet hign hinh Columns(4) Select Chon cot D (cot thie 4) Columus("D") Setect Chon cot D Columns.Select Chon todn bo cot trong sheet hign hanh Vi du vé str dung thudc tinh Rows (tuong tu déi voi Columns): Worksheets (“Week4”) .Rows (2) .Font.Bold = True cho két qua [a toan bé hang 2 trong sheet Week4 cht dam cla workbook hién hanh. Ngoai ra, ban cling co thé str dung thuéc tinh nay dé xac dinh sé cot hay hang cia viing due chon (Selection) khi két hop voi thudc tint Count 82 Msgbox “Vung ban chon gém” & Selection.Rows.Count & “hang.” 8.5.6- Cac kiéu thuéc tinh khdc trong tham chiéu - Thuéc tinh Item Truéng hop nay, méi 6 trong sheet duge coi lA mét Item (muc) va lan lot CO gia tri 1, 2, 3, 4,.. cho dén 6 cudi cing cila sheet. O dau tién cla nang dau tién (A1) cé Item =1, sau d6 cac cét tiép theo voi hang tuong ng sé nhan 2, 3, 4,... Sau khi hét toan bd cét (256 cét) thi sé xudng hang tiép theo (hang 2). © A2 cé Item = 257, cdc cét tiép theo voi hang 2 sé c6 gid tri 258, 259, 260,... Cac item duoc xac dinh tuan ty nh vay cho dén khi hét cdc 6 trong sheet. Két qua nay thuc hién trong Excel 2003, con Excel 2007 do cd sé lvong hang, cot nhiéu hon nén két qua sé khac di, nhung nguyén tac thuc van nhu vay. Bang 8-12: Sir dung thuéc tinh Item Cau Ten hue hign Cells(1).Select hoac Cells.ltemi(1).Select Chon 6 AL Cells(3).Select hoac Cells. Item(3) Select Chon 6 CL Cells(256) Select hoac Cells.Jtem(256)-Select_ Chon 6 IVI lect Chon o A2 Cells(257) Select hoae Cells. ten(257).S Kiéu tham chiéu Item it dug stv dung vi viéc xac dinh tht ty tizng 6 kho khan va phy thudc vao phién ban Excel. Néu sé luong cét, hang trong Sheet thay ddi thi két qua sé khéng chinh xac. - Thuéc tinh R1C1 Khi stv dung thuéc tinh R1C1, Excel sé tham chiéu dén 6 ma dug xac dinh boi sé hang (Row) va cdt (Column). Vi du 6 tham chiéu R4C2 sé truy cap dén 6 B4. Khi str dung kiau tham chiéu nay, mdi quan hé gitva cac 6 trong tinh toan sé dugc thé hién trong céng thie. R[mJC[n] sé tham chiéu dén (truy cap dén) 6 co m hang phia dudi van c6t phia bén phai so véi 6 kich hoat (hién hanh). Gia tri m,n co thé la sé am, khi do huong sé ngugc lai, 1én trén va sang bén trai. Vi du 4: Nhap vao céng thir Sum("B2:B4”) trong 6 B5. O BS cé dia chi hang 5 va c6t B, c6 gia tri la téng céc 6 clia 3 hang trudc dé, gdm hang thee 2 dén hang thw 4 nhung cling cdot. Tir do xay dying cac dong lénh nhw sau: 83 Range ("B5") .Select ActiveCell.FormulaR1Cl = “=Sum(R[-3]C:R[-1]C)” Vi dy 2: Nhap vao céng thie = D2-D4 trong 6 D5. Noi dung R1C1 trong FormulaR1C1 co thé khdng can dung dén va néu ban muén, 2 dong trén co thé ghép thanh 1 nhw sau: Range (“B5”) .Formula = “=R[-3]C[2]-R[-1]c[2]” Vi dy 3: Thay di cong thive thanh gid tri Ket qua. © G6 cé cong thirc la =G5*G4. Vi du 6 G5 co gia tri la 2, 6 G4 co gia tri la 3, nhw vay gia tri nhan duge cla 6 G6 Ia 6. Ta sé thay ndi dung ham thanh gia tri la 6. Range ("G6") Select ActiveCell.FormulaRICl = “=R[-1]C#R[-2]c” Selection.Copy Selection.PasteSpecial Paste:=xlvalues Application .CutCopyMode = False Cau lénh cudi cing la Iénh huy b6 ché do trang thai Cut/Copy (duong gach nhap nhay bao quanh 6 da chon). - Thu6c tinh EntireRow va EntireColumn Excel str dung hai thugc tinh trén dé xdc dinh ca hang hay cét Bang 8-13: Str dung thuéc tinh EntireRow va EntireColumn Cau lénh Thue hién ction EntireRow Se Chon toan bd hang tai vi wi khdi 6 chon ection. EmliteColumn Select Chon toan bd cot tai vi tri Khoi 6 chon - Nhom thuéc tinh End Co nhitng luc ban ean phai xac dinh nhanh chong di chuyén dén 6 nm cach xa cac 6 hién hanh trong sheet, nhu di chuyén dén 6 ctia cot dau tién, Cot cudi cling, hang dau tién, hang cudi cung ctia 6 kich hoat. Théng thueng trong Excel, ban thuéng phai sty dung nhém phim tat: End+Up, End+Down, End+Left va End+Right. 84 Trong VBA, ban c6 thé sty dung nhém thugc tinh End dé di chuyén nhanh chong dén nhéng 6 trén. Bang 8-14: Su dung nhém thugc tinh End() Cau Jénh Thuc hién ActiveCell End(x!ToRight) Select Chon 6 ctia cot cudi cing so véi o hién hanh ActiveCelLEnd(xIToLeft) Select Chon 6 cita cot du tin so voi o hién hanh. ActiveCell.End(xtUp) Select Chon 6 cia hang dau tién so véi 6 bign band. ActiveCell. Fnd(xtDown) Select. Chon 6 cita bang cudi cang so véi 6 hien hanh 8.5.7- Xdc dinh théng sé ctia 6 va kh6i 6 C6 nhitng luc ban can phai xdc dinh mét sé thong clia cdc déi tuong. Vi dy nhu can xac dinh thir ty hang, cét, sé 6, sé hang hay sé cét, dia chi... cla khdi 6 ban chon. Trong ctra sé Immediate, khi gd ky ty ? trudc cau lénh, khi Enter sé tra lai két qua ota cu lénh dé (in ra man hinh). Vi dy: Ban boi den khdi 6 "B2:B9", sau d6 go doan ?Selection.Row (_1), két qua sé hign ra o hang dui. Ban tiép tuc thuc hién déi voi cau [anh khac (Hinh 8-8). Bang 8-15: Xéc djnh thong sé ctia 6 va khéi 6 Cau lénh trong Immediate Thue hién Selection. Row 6 thit ur hang dau tien ciia Khoi O chon ‘}Selection. Column 86 thif tw hang cot dau tien cia khoi o chon ?Sclection.Rows.Count Tra vé s6 hang cita Khoi chow ’Selection Colums.Count ‘Tra vé sO cOt cla Khdi O chon. Selection. Address ‘Tra vé dia chi khdi 0 chon ?Selection Cells.Count Tra vé $6 6 trong kbOi O chon ’Range("B3").NumberFormat ‘Tra vé kiéu dinh dang so A3 ?Range("B3").Formula ‘Tra vé cong thife trong 6 B3 ’Range("B3"). Value ‘Tra vé gid ui hign tai 6 B3 ?Range("B3") Style Tra vé kiéu Style cita 6 B3 85 ?Selection. 2 Selection. Colum 2 2Selection. Rows. Count, 8 Selection. Row Columns. Count 15] / i € > mi \ Sheett \Sheet2 / Sheets / Sie ae : ei] Hinh 8-8: Cifa sé Immediate vdi vide xac dinh két qua thuéc tinh 6 (khdi 6) 8.5.8- Tao ving tric tiép (khéng sw dung VBA) Voi mét $6 truong hop ban phan chia vung cac 6 voi tén xac dinh dé dé truy cap va str dung. Théng thong, cac dé liéu trong mt vung (duoc tao tir khdi 6) cling c6 nhiing dac diém chung. Vi dy nhu ving tén céng ty, vung san pham, vung gid tri, vung tén nguoi thuc hién,... Co hai phuong phap tao vung, dé [a tao ving tryc tiép va str dung VBA. Khi chon tén nhteng ving dé thi Excel sé truy cap dén viing ma ban chon. Ban phai dat tén nhing ving dé true khi viét thu tuc hay diing chinh VBA dé tao tén cia vung. Ban co thé thu hién céng viéc véi toan vung da chon. Dé tao vung theo y muén, dau tién ban chon nhiing 6 dé bang cach boi den, sau do bam vao phan Name Box (phan géc trén bén trai, cing hang voi thanh céng thre). Cach thyc hién trén la cach tat cla chtre nang dal ten cho khdi 6 trong Excel (xem trong menu Insert/Name/Define...). Sau do, dat tén clia vung do rdi bam Enter. Gia thiét rang ban dat tén Congty cho khdi 6 “C2:C8” trong sheet Danhsach ctia workbook Quanly (hinh 8-9). Vi dy 4: Lam cdc 6 trong Congty (la khdi 6 “C2:C8") dam lén Range (“ [Quanly.x1s]Danhsach!Congty”) .Font.Bold = 7 Vi dy 2: Néu worksheet Danhsach trong workbook Quanly dang hién hanh, thi Range (“Congty”) .Font.Bold = False sé lam cé 6 trong khéi 6 “C2:C8" khong dam (chér binh thudng) 86 o vn xay dung d phn tr van va aay dung ha tang Ha Nei ripghién ciru day thust al dia chat n trién khai cdng nghé va XO Mé dis chit [Gang ty TAAH Wha nude 1 thanh wen kha sat va XD dng ty Kile théc md Hinh 8-9: Bat tén cho ving 8.5.9- Tao vung bang cach su dung VBA Tén ving co thé duoc gan theo y muén khi str dung macro, vi du dir6i day Workbooks ("Congty.x1s”) .Names.Add Name: “Congty”, _ RefersTo:= “=Danhsach!D1:D10” Range (“Congty”) .Font.Italic = True __ Thiituc trén dat khdi 6 “D1:D10" trong sheet Danhsach o6 tén la Congty Ket qua la chir trong khoi 6 “D1:D10" sé bi nghiéng 8.5.10- Lam viéc voi nhiéu vung Co nhiéu truéng hop, ban phai tham chiéu dén nhiéu khdi 6 trong macro. Ban c6 thé xoa sach ndi dung khdi 6 dé hay thay ddi dinh dang chting Range ("A1:C3,H4:L8,P14:234") .ClearContents 86 xoa sach ni dung nhiing khéi 6 da chi dinh. Con adi voi nhing tén viing ban dat (nhy & trén), cd thé thurc hién nhu sau: Range (“Danhsach1, Danhsach2, Danhsach3”) .ClearContents Ngoai ra, ban cé thé lam thay ddi dinh dang chi trong cdc ving: Range("“Danhsachl, Danhsach2, Danhsach3”) .Select 87 With Selection. Font .Name = ’.VnArial” .Size = 12 -ColorIndex = xlAutomatic End With Ghi chu: Trong macro, cac ving c6 thé dug xac dinh, dat tén va duoc phéi hop khi str dung phuong thtrc Union. Xem thém tai muc 8.5.1 8.5.11- Di chuyén, sao chép va xod 6 (khéi 6) Trong qua trinh viét chwong trinh trng dung bang VBA, ban thudong xuyén sé gap truong hop di chuyén, sao chép hay xoa 6 (khdi 6). VBA da ihidt lap mét cach ty dong cho viéc thy hién cdng viéc kia voi phuong thir Cut, Copy va Clear. Bang 8-16: Sie dung nhém phuong thtrc Cut, Copy va Clear Cau lénh trong Immediate Thuc hién Range("AS").Cut Chuyén ton b6 6 AS sang Ad Destination:=Range("A4") Range("A3").Copy Sao chép ton bd 6 A3 sang khdi Destination:==Range("D5:F5") DSS Range("A4") Nod toan boo AF Ghi cht rang ca hai phuwong thre Cut va Copy déu stv dung di tueng Range voi tham sé dac biét cd tén [a Destination. Tham sé dé sé chi ra dia chi clia 6 (hay khéi 6) ma ban muén di chuyén hodc sao chép dén. Trong vi du cudi cung cia bang trén, phuong thtve Cut duoc stv dung khéng can tham 36 Destination sé ct bo dé liu tai 6 A4. Phuong thivc Clear sé xoa tat cd moi tht? trong 6 (khéi 6), gdm ca dinh dang cfing nhu ghi cht trong 6. Néu ban mudn chon diéu kién xod, ban sty dung cdc phuong thie sau - ClearContents: Xoa toan bé di liéu trong 6 (khéi 6). - ClearFormats: Xoa toan b6 dinh dang, tra vé nguyén gédc ban dau. -ClearComments: Xoa toan bd cdc loi chi dan trong 6 (khdi 6) duo chon 88 8.5.12- M6t sé thuéc tinh héu ich cia déi tvong Range Tai sao lai lam viéc véi déi twong Range? Néu céc ban doe nhiéu sach viét vé VBA, khong it thi nhiéu cac tae gia déu cha trong dén déi twong Range. Ciing dé hiéu thdi, voi VBA trong Excel thi day | tong ban phai thuong xuyén lam viéc. Néu hiéu ré déi twong nay thi ban dé dang gidi quyét duoc nhiéu va n quan. Nhu da 6é cap qua & muc 7.1, déi twong Range cé rat ni thudc tinh. O day chting ta lam quen mét sd thudc tinh héru ich va hay st? dung Chu y: Mat sé thudc tinh la read- only (chi doc), diéu nay cé snghia la ban khong thé thay déi duge. Vi du, mai déi tuong Range c6 thuéc tinh Address dé ban cé thé tham chiéu dén nhung kh6ng thé thay ddi dia chi. Thuéc tinh reac-write c6 nghia la viva xac dinh dug thang tin gia tri viva co thé thay déi gia tri ctia thudc tinh dé - Thu6c tinh Value Thudc tinh Value dai dién cho gia tri dug cha trong mét 6. Day la thuéc tinh read-write. Vi dy sau thé hién gia tri chtra trong 6 A1 tai Sheet? Msgbox Worksheets ("Sheet1”) .Range(“A1”) . Value Ban chi c6 thé xac dinh duoc gia tri tai mét 6, do do néu viét nhu doan ma sau sé gay ra l6i: Msgbox Worksheets ("Sheet1”) .Range("A1:C3”) . Value Tuy nhién, ban c6 thé gan gia tri cho nhiéu 6 cling mét Iie nhu sau: Worksheets (“Sheet1”) .Range("A1:C3”) .Value=123 ay [a thudc tinh mac dinh ctia déi tugng Range, do dé hai dong ma sau sé cho gia tri nhu nhau: Worksheets ("Sheet1”) .Range (“AL”) .Value=75 Worksheets (“Sheet1”) .Range (“Al”) =75 - Thuéc tinh Text Thue tinh Text tra vé mét chudi dai dién cho chi? duc thé hién trong mOt6, chi y rang gia tri text nay da duo dinh dang. Day la thuéc tinh read-only. Gid st 6 A1 chtra gid tri 12.3, nhung da duoc dinh dang dé thé hién $12.3 Vi dy sau sé thong bao gid tri $12.3 clia OA Msgbox Worksheets ("Sheet1”) .Range (“AI”) .Text 89 Nhung dong lénh dui day chi thé hién gid tr] 12.3 Msgbox Worksheets (“Sheet1”) .Range (“Al”) .Value ~ Thuéc tinh Count Thudc tinh nay tra va gia tri 14 sé Iuong 6 trong mét khoang (tat cd cac 6 ont khong phai chi cdc 6 r6ng). Day la thudc tinh read-only. Dong lénh dudi day sé xac dinh sé cét ban chon: MsgBox “Ving ban chon cé” & Selection.Columns.Count & “cét.” + Thuéc tinh Coiumn va Row Thudc tinh Column tra vé gia tri dug dai dién cho cot cia mét 6. Tuong ty thude tinh Row tra vé gia tri duoc dai dién cho hang ctia mét 6. Hai thuéc tinh nay thudc dang read-only. Vi du sau sé thong bao gid tri la 6: Msgbox Sheets ("Sheeti") .Range (“F3”) .Column Vi du sau sé théng bao gid tri la 3: Msgbox Sheets ("Sheet1”) .Range("F3”) .Row Chu y: Néu co nhiéu 6 trong mot khoaing thi thudc tinh Column sé tr cia tri c6t dau tién cla khoang dé. Tuong ty’ voi thude tinh Row trong truéng hop nay. Ban ding cé nham Jan gira thude tinh Column va Columns, hay Row va Rows + Thuéc tinh Address Thuéc tinh Address la thudc tinh dang read-only, thé hién dia chi cla 6 déi voi déi twong Range. Vi du sau day sé cho két qua la $A$1:SE$5 Msgbox Range (Cells (1,1) ,Cells(5,5)).Address Vi du tiép theo thé hién kiéu dia chi cla mét 6 khi sty dung thém cac tham sé, dong nhac la két qua cia kat qua hién thi kiéu dia chi: Set mc = Worksheets ("Sheet1") .Cells(1, 1) MsgBox mc.Address () \ Sasi MsgBox mc.Address (RowAbsolute:=False) » SAL MsgBox mc. Address (ReferenceStyle:=x1R1C1) * R1IC1 30. MsgBox mc.Address (ReferenceStyle:=x1RIC1, RowAbsolute raise, ColummAbsolute:=False, (cing 1 déng). pelativeTo:=Worksheets (1) .Cells(3, 3)) * R[-2]C[-2] - Thudc tinh HasFormula Thudc tinh nay thuéc dang read-only, thuéc tinh nay tra vé gid tri True ngu 6 duge chon chiva céng thre, nguoe lai tra vé False. Néu mét vung co nhieu hon mot 6, thi VBA sé chi tra vé True néu tat ca cac 6 trong vung nay agu co chtva cong thirc. Néu 6 6 trong mot vung la céng thtre va cdc 6 khac khong phai la cng thirc, thudc tinh nay tra vé Null. Chui y khi khai bao bién ding cho thu6c tinh nay, néu khéng sé bj Idi sai kiéu dé ligu. Tha tue duo’ day 56 xac dinh xem toan b6 cac 6 ban chon c6 phai la céng thirc khong? Sub Congthue () worksheets ("Sheet1”) . Activate set rr = Application. InputBox(prompt:="Chon ving trong worksheet”, Type:=8) If rr.HasFormula = True Then MsgBox “Toan bé cac 6 dugc chon chta céng thuc.” End If End Sub - Thudc tinh Font Nhw ban da biét, thudc tinh co thé tra vé mét déi twong. Ddi tuong Font co nhiéu thudc tinh hivu ich cho viéc dinh dang. Vi du sau tra vé déi tong Font cla 6 A1: Range (“Al”) .Font Vi du sau thiét ldp thudc tinh Bold (kiéu chi in dam) ctia dai tong Font cla ving A1: C5: Range ("A1:C5”) .Font.Bold = True + Thu6c tinh Interior Thuéc tinh nay cling twong ty’ nhu’ thudc tinh Font 6 trén, tra vé déi tuong Interior (bén trong). Vi du sau sé thay di mau nén (background) cia 9 A1 sang mau dé (mau dé cé gia tri Colorindex = 3) 91 Range (“Al”) .Interior.ColorIndex = 3 Colorindex sé co gid tri ty 1 dén 56 tong ty voi cac mau trong bang mau cia Excel. Dé dé nho, ban ciing cé thé diing cac gia tri hang s6 nhu vbBlack (mau den), vbRed (mau dé), vbGreen (mau xanh [4 cay), vbYellow (mau vang), vbBlue (mau xanh da troi), vbMagenta (mau héng), vbCyan (mau luc lam) hay vbWhite (mau trang). - Thuéc tinh Formula Thudc tinh Formula dai dién cho céng thtrc trong mot 6. Day la thudc tinh dang read-write. Vi du sau dua céng thie tinh tang vao 6 A13: Range ("A13") .Formula= “=Sum(A1:A12)” Chu y rang c6ng thire fa chudi ky ty va nam trong dau ngoac kép (“"). - Thuéc tinh NumberFormat Thudc tinh NumberFormat dai dién cho dinh dang sé cua déi tuong Range (chu y la chudi ky tw) nhu vi du sau: Columns (“A:A") .NumberFormat="0. 00%” Day Ia thudc tinh dang read-write. Ngoai ra cén c6 rat nhiéu thudc tinh khac ma ban c6 thé khai thac, Bang chtrc nang ty dong Auto List Members (chi tiét 6 muc 11.1), ban co thé tim hiéu chi tiét nhiing thudc tinh ofing nhu Phuong thirc cia déi tyong Range. Range ("ai"). e@ Valuez | } eS! VerticalAliqnrment e& Width | eG Worksheet l eG! WrapText Hinh 8-10: Chic nang Auto List Members hién thi danh sach thuéc tinh, Phuong thifc cua déi tu’gng Range 92 8.6- Tra ciru va tham khao déi twong Dé tra clu va tham khdo déi tong, ban st? dung chive nang trinh duyét déi tuong (Object Browser). Chtrc nang trinh duyét déi twong due str dung dé tim hiéu cac déi tung, cac phuong thre va nhtrng thuéc tinh ctia ching Ngoai ra, chive nang nay con quan ly cdc har menis) duoc xay dyng trong VBA. Cach thue hién nhu sau 1. Vao clva sé Visual Basic Editor dang mo. 2. Tw menu View, ban chon Object Browser (hoac bam phim F2). 5p dank sach dy an, thir vign [ Hop chusi tim kiem | [ere of Lo: beg Activecell 8 aasin be actveonan (3 Addins ee 5 bos actveshest [ES Actvebindaw 13 AllowEditRanges leS" Activewwiorkbook J answermizard lest Addins. © fe eopticati Hinh 8-11; Cira s6 Object Browser Sau dé ctva 86 hién ra nh hinh 8-11, & gitra cha danh muc cdc nhom - lop (classes) khée nhau ctia déi tyong. Nhom (class) chinh la phan m6 ta cac dang clia doi tweng (vi du nhw particular chart thudc vé nhom Chart). Nhom th dy &n (project) hay thu vién (library) e Bam vao hinh tam gidc di xudng bén canh va chon, Excel (hinh 8-12). Khi do cdc nhoém thudc Excel sé xuat hién. - Trong ving Classes, ban cu6n xudng va chon Range. a . Trong Members of ‘Range’ ban bém vao ClearContents. 6. Chi dan & bén canh ClearContents ma co ky hiéu mau xanh (vi du: is] ) cho biét déi tugng do la phuong thre (method). fs Geaten 7. Néu muén biét thém théng tin vé ClearContents, ban bam vao nut Help (hinh dau ? mau vang). o Dé xem vi du, ban bam vao Example (dau héi mau xanh, hinh 8-13). © Dong ctva s6 hung dan sty dung ClearContents va tiép tuc cuén dé tim cac thanh phan khac trong Members of ‘Range’ 40. Chi dan ma co biéu twong ban tay chi & bén canh (vi due! Text ) cho biét déi twong do la thudc tinh (property). 411. Bong cla sd Visual Basic Object Browser vao. ls) Microsoft Excel Objects 8) Sheet (Sheet 1) ‘Sheet2) (Sheet3) is Workbook 3 Modules oftice Jstdole KS} Adjustments KY AllowEditRange 8% Moduler 1k) AlowEditRanges [8 Answerwizard Ia AnsweiWizardFiles 2B Application 3} Areas 1&3 Assistant S&B AutoCorrect 2 AutoFilter 5%} Axes 6) Axis 1:9 avieTitla. 94 jembers of '=globals>" Abs ActiveCell # ActiveChart les? Activerrinter lest ActiveSheet | [eS Activewindow leSt Activeworkbook Ic Addins © Appactivate les Application S Asc © Asco |S Ascw [est Assistant ho atn © Beep Le Aateuiate Hinh 8-12: Tim hiéu ddi tugng Excel trong Object Browser = lide OE ee Wemoers of Range’ 1) sheets (sheet!) [AB Phonetic © Calculate 1B) steetz (heetz) [RY Phonetics $B) Shect3 (sheets) [A PictureFormat Characters Thiewerkbook ——_/&%B PheotCache 8 CheckSpelling = By Modes 2 Pwatcaches © Clear 2 Module 184 PivotCell ClearComments 28 Modulee 2 PheotFiela 12 PivotFields |S ClearF onnats £24 PivotF ormula { ClearNoles 2 PivolFormulas, 1 ClearOuline 24 Pivotten bs Column 12 PirotternList © ColumnDifferences {ig ivotterns fe Columns, 2) PivotLayout fest Columntidth Function ClearcantentsQ) Member of Exee! fae Gu Oi BG Ps eres Yr 2 ieorContents Method ahste bande Eco v8 KE tba} Ergeera ce en aod exannd pices Spninestt execpt | S585} hs thf tan tha ann Crs dtaron ache kicewsthetarntrg ‘sisatlencantana sonia superior Rags. neipraaen a anyrea Chaves ethenoesbee tu tant Setatcan (Pt Shumate BESS leon Sccatieas) (Phd range foasina to fe re \Nhsing Boh ic bic rif ewe 18 We grand doye the toms tan ce AL G7 on Set tak = eae i Peal) daietoastnnbtae ac Akh Sra ia reef Esereevony wera [Brod wockencete(rahset1"} Range "AL-697") chew sacar i Pr COREE | es Pi 1 Fret ease nas tr chat trot ve he sat retail 38 Pree isan hacta("onacet") -chaetacen cLearcontent Ye Faenlva teal © Wearmang ante: ye athoe tung F tovndr Goede ce Hinh 8-14: Ctra sé Microsoft Visual Basic Help chi dan cdc d6i tugng trong Excel 95. Chuong 9 KHAL BAO VA SU DUNG BIEN TRONG VBA Cling nh cdc ngén ngér [ap trinh khac, ban cé thé stv dung cac bién (variable) trong viéc tinh toan. Theo dinh nghia, bién la mot vung C6 tén trong bd nho ding dé chtra mot gid tri hoc mot chudi ky ty’ duge gan cho bién d6. Gia tri ctia bién co thé thay ddi trong sudt qua trinh thy hién chong trinh. Vi du, bién tudi la ki@u nguyén duong, bién cao_dé la sé thap phn, bién tén_ngu6i la chudi, bién xe_dap Ia déi tong, Méi bién ban thuOng sw kiéu gid tri nhat dinh, ta ding khdi niém bién dé uu tr kidu gid tri do trong bé nho may tinh, mdi bién lwu tre 1 kiéu gia tri cla chwong trinh. Mac dt VBA khéng doi hdi, nhung ta nén dinh nghia r6 rang tung kiéu gia tri true khi truy xuat no dé ma lénh cla chuong trinh dug trong sang, dé hiéu, dé bao tri va phat trién. Néu ban can bién cé gia tri dac trung riéng (nhu s6 nguyén, thap phan, chudi, mang...) dé sty dung trong macro, co thé khai bao bién dé. Nhiing bién duoc tao va cé thé [a nhieng kiéu nhu chudi (string), s6 (number), gid tri logic (Boolean), !6i (error), c&c mang (array) hoac déi twong (object). Cing nhu quy dinh dat tén cla macro, quy dinh dat ten cho bién nhu sau - Tén bién cé thé dai dén 255 ky tw. Nén chon tén bién ng&n gon nhung thé hién ry nghia - Ky tu dau tién phai la mat ky tw chit, cdc ky tu tiép theo co thé la cac ky tu chit, ky ty s6, déu gach dudi (_) - Tén bién khéng duoe chiva cac ky ty dac biét nh cdc ky ty: 4, &, 16%, 8. #4 @hm A = VBA khéng phan biét chir HOA hay chi? thuong trong tén bién - Khi viét tén bién ta nén viét hoa chi? dau tién cla mét tiv co y nghia - Khong due dting tén bién trung voi céc tt Khoa nhu Print, Sub, End Function, With, Select, Case,....(tir khoa [a nhiing tiv ma ngén ngi VBA da diing cho nhiing thanh phan xac dinh cia ngén ngi) 96 9.1- Khai bdo kiéu gia tri cho bién Thong thudng ban stv dung Dim trong khai bao kiéu gia tri cho bién cach khai bdo kiéu gid tri tong quat nhu sau (Public, Private, Static] Dim variable_name As data_type Co cac kiéu gid tri (data type) dug trinh bay nhu sau: Bang 9-1: Cac kiéu gia tri data-type trong VB Kiéu gia trj | Boolean Integer tri nguyén, tir -3 Bién kiéu gid tri nguyén, ttr -2 Bign ki 6, tit -3.40282 1.401298B-45 dén 3.40282 1 86 ligu kiéu tién té, Ap dung cho Tinh vue tai chinh, ké toan tir _ -922337203685477.5808 dén 922337203685477.5807 Date kiéu thoi gian, tir January 1, 100 t61 December 31,9999. Dir ligu kiéu Date phai cé dau # 6 hai déu. Object Bién kiéu d6i tuong String Bién kigu chu i cia chudi tt: 0 dén 65535 ky tu, gid wi chudi duge dat trong dau “” Variant Bién kicu moi dit ligu, thude kiéu dinh sn nbw » String, Double, Integer... Néu ban khéng khai bao kiéu ro rang cho bien thi duge hiéu la Variant, WBA sé chuyén d6i dit | 1 kidu Variant thanh m6t kiéu dir liéu khae cho phit hop ong qua trinh tinh toan Khai bao gia tri la thi tuc tac dong dén quy trinh xr ly va khong bi thay d6i béi thu tuc khac. Nh@ng gia tri vwgt qua gidi han quy dinh ctia kiéu gia tri {trong bang trén) thi bi 16i Overflow (tran bd nh6). Vi du vé khai bdo bién: Dim Tuoi As Integer ‘Tudi la sé nguyén Dim Caodo As Single ‘Cao dé 1a sé Dim Ten As String ‘Tén nguéi 1a chuéi 4 bién dé ton @ khi thd: tuc cham ~ Public (toan cuc): Khai bao bién voi tr khod Public ng} tai va hoat dong trong toan bé teng dung (toan cuc). Ké 97 dwt, nhung gia tri cla bién dé van duoc Iu lai dé goi ra trong lan sau (xem vi du trong muc 14.1.2). Bién nay chi mat di khi thoat khdi Excel Public Const Dungchung = “Thu nghiem chuong trinh” - Private (cuc b6): Khai.bao bién voi tl khoa Private thi bién dé chi hoat dng cuc bé trong module chia no. Private Pi As Single - Static: Khai bao bién voi tir khoa Static duge stv dung trong Function, Property hoac Sub va dugc uu tri trong khoang dinh phan san cia bé nho. Nhéeng bién duoc khai bao vdi tir Khoa Static tiép tuc sl dung nhtng gid tri moi nhat voi diéu kién la tht: tuc phai dang dug chay. Static Giatri(50) As Integer Vi du vé thu tuc st? dung bién Static: Sub Bien_Static() Static Vongdem As Integer Vongdem = Vongdem + 1 MsgBox “Véng dém hién tai 1a:” & Vongdem End Sub | Microsoft Excel 1) | Microsoft Excel Vong dém hign tat By 4 Vong dém hia tal a: 2 Hinh 9-1: Két qua chay thi tuc fan dau tién va fan thir 2 Ban dau, Vongdem cé gia tri la 1, sau dé sé tang thém tleng gia tri 1 khi ban cho chay thi tue (diéu d6 c6 nghia la gia tri cia bién duo lwu trong bd nho) - Bién ding chun Trong mot sé trudng hgp, cdc thi tuc trong module hay trong ca dy an stv dung mot bién chung. Vi dy nhu tén mét chuong trinh, tén don vi, co’ quan, tén mot bién thueng xuyén duoc st dung dé tinh toan,... Ban khéng thé khai bao bién ding chung tai vi tri bat ky trong thi tuc hoac ham nhu bién thdng thuong, ma phai khai bao 6 phan trén cing ctia tha tuc hodc ham, tré cau iénh Sub (hinh 9-1). Dé bién cé thé dung chung trong mot module thi ban khai bao nhu sau ‘Khai bao 6 phia tr€n cing cua module téng quat Private Const TenCT = “Céng ty CP tu van va xay dung Ha NOi” Dim Tuoi As Integer 98 ‘Sau dé méi dén cac thi tyuc hodc ham Dé bién cé thé ding chung trong dy dn (ttc la c6 thé str dung trong céc module téng quat hay module ctia di tugng workbook, worksheet) thi ban khai bao nhu sau: ‘Khai bao & phia trén cing ctia module téng quat Public Const TenCT = “Céng ty CP tu van va x4y dung Ha N6i” Public Tuoi As Integer ‘Sau do méi dén cdc thi tuc hodc ham Ngoai ra, ban cé thé yéu cau phai khai bao toan b6 bién bang cach sty dung Option Explicit 6 dau tién ctia module. Trong hinh 9-2, bién hang Dungchung va Heso dug st dung trong cac thu tuc Néu c6 bién nao chua duoc khai bao, VBA sé bao idi ngay (hinh 9-2). Option Explicit chi c6é y nghia trén tleng module. iouiiew Pub [Sub Keudul Dim Tuoi As it Dim Caodo As Single Din Fen : Compile error: Tuo! arable not defined i i } as Se eo 0155 ssqBex "Ho va ten: * & Ten & vbTab &vbTab 8 ngehing x “He so ban dau la” & Heso, , Dungchuny MgBiox "Cao da ho khoan la +" & C2ado &* End, Sub, Sub assignAray() Dim Ara) As String Ant) = "Thang 1 AQ) = Aa And) hang 3 MsgBox A | 3) & Arr) & voNewLine & Amr) & vBCrLF & Arr(#}, , Dungchung | MsgBox ban dau le" & Heso, , Dungchung Hes: End Sub, Hinh 9-2: Khai bao Option Explicit va bién ding chung 6 trén cing 9.2- Cac toan tw trong VBA Trong qua trinh lam viéc voi bién, ban can phai tinh toan va xt ly céc gia tri cla bién. Khi dé ban can phai hiéu vé toan tl. Toan tir fa mot bd phan 99, cia ngon.ngi lap trinh ma ban cé thé str dung dé so sanh va thay ddi gia tri ctia cac bién. Mét bo phan chinh cia toan ti thuéng duoc st dung Ia toan tt toan hoc. Str dung cac toan tt toan hoc Ia viéc ban biéu dién nhing phuong trinh co’ ban. Dya vao mite dé wu tién, toan tt trong VBA co thé chia lam 3 loai chinh: toan tir 6 hoc, toan tly so sénh va toan tl logic. Chac chan ban da stv dung nhiéu toan tl? trong bang tinh Excel, vi vay, tdi chi gidi thiéu so’ qua vé cac toan tt chinh trong VBA. Dui day la danh sach cdc toan ti san co danh cho ban Bang 9-2: Cac ton tt trong VB Toan tir Mo ta Vidu Két qua + Cong them 243 5 Trirdi =8-5 3 * Nhan =4*12 48 / Chia =9/3 3 A Mai An, 16 % Phin tram =T3% 021 0 Ngoae don, ding dé wu tign tinh truse — =6-(42) 4 Mode Lay sO durcia phép tinh chia =10 Mode 3 1 & Ket hyp hai hoac nhiéu chudi thank | ="Hoa"&" di" — Hoa da chudi Bing (két qua tra vé 1a True hay False) > Lén hou < Nhé how >= L6n hon hoae bing Nho bon hoae bang <> Khac nhau =1<>9 And 1 tat hai biéu thife, td vé True néu And 4>1 diing toan bo Or Kiém tra hai biéu thie, tri vé True neu =3>2 Or 396 True dting mot Not ‘Thue hién phir nhan diéu kien logic =Not(3>1) Nor Thite hicn loai trit logic trong 2 biéu thite | =3>2 Xor 2>1 Like So sob hai chudi be" Like Lqv So séah mite d6 urong duong giita 2 bigu =2>3.Eqvl>4 True thie Imp So sduh do dinh liu gitta 2 bicu thite 4 Imp 153 False Ngoai ra, ban sé throng xuyén str dung toan tt so sanh don Ié hoac két hop voi And, Is, Not va Or dé thu thi logic trong cac vong lap (loop) hay, ip.. Then | 9.3- Biéu thee Biéu thtrc la mot day cac toan hang va toan ti? két hop voi nhau dé tinh ton M@t cong the todn hoc nao 6, Toan hang co thé la dia chi 6 hay khéi 6, han Sdn 66, hang, bién hay la biéu thtre. Cach thé hién bidu thre trong VBA tworng tu nhur trong Excel, Bang 9-3: Thé hién biéu thic trong VBA Song thtic trong VBA C4C5/C6" =SUM(C4:C6)* 1.5" ng thtic toan hoe D4=C4*C5/C6 Range("D4"), Pormut DS=SUM(C4:C6)"1.5 Range("DS").Formula an’ + bx $e ax extb te ! Vx 4 MR Ins ret ay’ SHCORMU Hog (a texpta)ixa6 bexze bo= x And x>=c x2 Ohoae y $12 x>=0 Or y<=12 9.4- Gan gid tri cho bién, hang va déi twong 9.4.4- Gan gid tri cho bién Bién dung dé chtra di liéu tam thoi trong vié ding toan tl = dé gan gia tri vao bién va tinh toan. Vi du dui day sé gan gid tri 3 cho bién Number va gid tri 9 cho bién Number2, bién Mynumber la tich cia hai bién trén tinh toan, so sdnh,... Ta Numberl = 3 Number2 = 9 Mynumber = Number*Number2 Cac vi dy khac vé th tuc khai bao va gan gid tri cho bién. Vi du 1: Khai bao tung kiéu gia tri cho bién va hién gid tri cla bién Sub Kieudulieu() Dim Ten As String ‘Khai bao tén nguéi 1a chudi Dim Tuoi As Integer ‘Khai béo tuéi 1a sé nguyén Dim Chieucao As Single ‘Khai b4o chiéu cao 1a sé thap pl 101 Tuoi = 22 ‘Gan ting gia tri Tuoi, Caodo, Ten Chieucao = 1.74 Ten = “Nguyén Van Dic” MsgBox “Ho va tén: “ & Ten & Chr(13) & “Tudi 14“ & Tuoi & _ ’ tudéi” & Chr(13) & “Chiéu cao “ & Chieucao & “ (m)™ End Sub Két qua thé hién 6 hinh duéi da Lestat ctl Ho va tén: Nguyén van Bite Tudi la 22 tual Chiu cao 1.74 (rn) OK Hinh 9-3: ét qua thé hién ting kiéu dir ligu Vi dy 2: Trong th tuc dui day, Ic ban dau bién m dugc gan la 4. Sau qua trinh lap, bién m nhan cac gid tri 1 5, 6 va cudi cling la 7. Nhw vay, bién m cé thé thay ddi theo y muén. Sub VD_Do() m=4 ‘m nhaén gia tri ban dau 1a 4 Do ‘b&t dau véng lap m=m+1 ‘dit gia tri m tang (+ 1) MsgBox m \Hién thong bao gia trim Ifm > 8 Then Exit Do ‘néu m > 8 thi sé thoat khdi Do Loop ‘Tiép tuc vong lap End Sub AT et ‘ Vi du 3: SW dung khai bao Static dé tu gia tri cua bi trinh tinh toan Sub vD_Static() & 1 trong su Giatri co kiéu sé nguyén Static Giatri As Integer ‘B g nhan Sai On Error GoTo Sai ‘L6i gap phai thi 102 Laplai: ‘Nhdn Laplai ‘Whap gia tri mdi cho bién Giatri Giatri = Application. InputBox("Nhap gia tri cho Gia tri:”,, Giatri) (cing 1 déng). Exit Sub ‘Néu gia tri dung quy dinh thi thoat Sai: ‘Cac lénh thyc hién trong nhan Sai MsgBox “Co 16i khi nh&p gia tri cho bién Giatri.” & vb- NewLine & vbNewLine & “Bién Giatri hién tai 1a” & Giatri (cing 1 déng) . Resume Laplai End Sub (a) (b) tri ban dau cila bién Giatri 1a 0 va ban nhap gia tri mdi 1a 12 616i khi nhap gia tri cho bign Giatri, Bién Giatri hién tal | 12 Htinh 9-5: Bao 161 khi ban nhap gia tri mdi cho bién khéng ding quy dinh kém theo gia tri hign tai ca bién Giatri Tht tuc trén hoat déng nhu sau: Ban , Khi chay tha tuc thi gia tri cla bién Giatri mac dinh [a 0 (hinh 9-4a). Ban nhap mét gid tri mdi la 12 trong clra sé nhap gia tri (hinh 9-4b), thi: tuc sé két thuic. Tiép tue cho chay thi tuc trén, cira 6 nhap gid tri hién ra nh hinh 9-4b. Ban thir khai bao gia tri moi a mot chudi nao dé, Excel sé théng bao Idi kém theo gid tri hién tai ctia bién Giatri Diéu dé 66 nghia [a gia tri cudi cling cla bién Giatri duge Iwu lai va khong bi thay doi néu ban thuc hién sai. 103 9.4.2- Gan gia tri la hang 36 cho bién V6i nhting gid tri khéng thay ddi thi ban nén thiét lap la hang sé (constant) iéu dé ngan can ching bj bién déi do nham lan. Ba gid tri khong bi thay déi do tht tuc tac dong, ban thém ti khod Consf dng trudc bién, sau do stv dung toan ttr = dé gan gid tri la hang s6 vao bién dé tinh toan. Vi du va viée gn gia tri cho hang Pi Const Pi = 3.14159 Const Ten As String = “Lé Van Ding” Nhu khai bao 6 trén, bién Pi va Ten khéng thé thay déi. Néu ban v6 tinh paid cé tinh thay ddi gia tri bién nang thi sé nhan dug bdo |6i nhu hinh dudi aay. | | su vo_nienote a Sta | Dim Marks Ae Range ; | eaebe keene! Compile error | Assign inent to constant not permitted ox "Gia tri moi cua bien D la ——_ Hinh 9-6: Bao 161 Khi ban thay déi bién hing é tao bién hang trong pham vi cia chong trinh don, ban hay khai bao ching & phan trén, t6t nhat nam ngay dui tén cia chyong trinh. Vi du nhw: Sub Vidu() Const Tuoi As Integer = 25 Const Ten As String = “Lé Van Ding” MsgBox Ten & “cé tuéi” & Tuoi End Sub 9.4.3- Gan gid tri cho bién déi tuong Nhéing bién thdng thuong 6 trén dug str dung dé lvu do liu. Ngoai ra, con 66 mét loai bién dac biét duoc goi la bién ddi twong. Bién déi tung khong luu duoc dir liéu ma chi bao cho ta biét vi tri cia dé ligu, D8 khai bao bién déi tong, ban stv dung ti khoa As va gé chit “Object” nhu [a kiéu di ligu. Vi dy vé viéc khai bao bién déi tong myRange Dim myRange As Object Ban c6 thé thay Object bang tén déi tuong da duo’ Excel. Tén mét sé bién déi twong chinh ¢ 9-4 dui day: Bang 9-4: Cac inh nghia sn trong ‘a Excel dug trinh bay trong bang iéu bién déi tuong chinh trong Excel wane] n bien di Command Bar dung duce Céng viée trén chu that sy dé khi knai bao bién déi tueng Ban can phai gan gid tri cho bién déi tong true khi st? dung trong thi tuc. Mac di hau hét Phuong phap gan déu str dung t a gid tri. Nhung 4éi voi bién déi twong ban khong thé nhu vay duc Khi 46 ban phai str dung tir Khoa Set, sau dé [a toan tir = va gi du vé khai bao bién déi twong: Set myRange = Worksheets ("Sheeti”) .Range ("C1:C5”) Gia tri cua bién myRange sé tham chiéu dén viing “C1:C5" trong Sheet Néu ban bd qua tir khod Set, VBA sé bao Idi “Run-time error 91 Object variable or With block variable not set.” Vi dy 4: St dung bién déi twong [a khéi 6 Sub VD_BienDT() Dim Vung As Range Dim C As Object Set Vung = Range ("B1:Bi¢" D=0 For Each C In Vung If C.Value < 40 Then D=Ditil End If Next ¢ MsgBox Set Vung = Nothing End Sub Trong vi du trén, bién C va Vung dug khai bao la dai tong. Bién D da khai bao & gid tri ban dau bang 0, sau khi sty dung phuong phap dém cac 6 trong khéi 6 “B1:B10" thod man diéu kién gia tri (value) trong 6 dé nhd hon 40, bién D bi thay déi (trudng hop nay D = 10). Khi ban thy hién xong thd tuc, nn dat lai bién déi twong 1 Nothing dé giai phong bién khéi bd nho. Vi du 2: Bién d6i tvong Doituong hop Ié voi thudc tinh Text. Sub BienDoifuong() Dim Doituong As Object, Noidung As String Set Doituong = Range("B2") 'Gan bién déi tuong 1a 6 B2 Noidung = Doituong.Text ‘Gan thudéc tinh Text cia bién MsgBox Noidung ‘Hién gia tri thuéc tinh Text Set Doituong = Nothing 'Xoa bo bién déi tuong End Sub Tai thi tuc trén, bién déi tuong Doituong dugc gan la 6 B2. Khi duo gan, bién déi trong nay cd day du thuéc tinh, phyong thire nhu voi doi tong Range trong Excel. 9.4.4- Hwong dan truyén tham sé bang gia tri Trong mot sé thi tuc khi Khai bao bang Dim thong thuong, Visual Basic co thé thay déi gia tri ctia cdc bién. Vi du Sub Thay doi() Dim i, Giatri As Integer ‘Luc dau thi bién Giatri 1a 20 Giatri = 20 For i = 1 To 4 Giatri = Giatri +1 Next MsgBox “Gia tri bay gid 1a" & Giatri ‘Sau 4 lan véng lap, Giatri co gia tri mdi 1a 24 End Sub 106 Gia ti bay gid 24 Hinh 9-7: Gia tri cudi cling cua bién Giatri é khéng lam thay déi gia tri cia bién, ban phai khai trvéc tén cua bién d6 voi tu khod ByVal. Moi ban xem vi dy sau dé ro hon: Sub ThreeNumbers () Dim numl As Integer, num2 As Integer, num3 As Integer numl = 10: num2 = 20: num3 = 30 MsgBox “Gia tri trung binh 1a" & MyAverage(numl, num2, nun3) MsgBox “numl=" & numl & Chr(13) & “num2=" & num2 & Chr(13) & “num3=”" & num3 & Chr(13) (cung 1 dong) End Sub Function MyAverage (ByVal numl, ByVal num2, ByVal num3) numl = numl + 1 MyAverage = (numl + num2 + num3) / 3 End Function Thi tuc ThreeNumbers sé gan gia tri cla ba bién va sau do goi ham MyAverage tinh toan, tra vé gid tri trung binh cla cac sé da dug luu git? trong cdc bién do. Cac tham sé cia ham la nhéing bién num, num2 va num3, toan bé tén tham sé déu co tr khoa ByVal dtrng truoc. Th tuc ThreeNum- bers da truyén tham sé cho num1, num2, num3 ctia ham MyAverage. Khi tinh gid tri trung binh, ham MyAverage da thay ddi gia tri cla bién. num Bién num 6 gia tri bang 11 (10+4) & trong ham. Do vay, khitham tinh gia tri trung binh cia th tuc ThreeNumbers, hop thong bao MsgBox sé hién thi két qua 20.333 va chur khéng phai la 20. Sau dd, MsgBox sé hién thi toan bd ting gid tri dé dugc lu gilt la gid ti gde gan cho ching (10, 20 va ti bién. Cac gi 30). Xem cdc hir 107 Hinh 9-8: Gia tri cia bién MyAverage va numi, num2, num3 » khoa ByVal trudc bién num trong khai Viéc gi sé xay ra khi ban bo bao ham MyAverage? Két qua tinh todn cla ham van la gia tri trén, nhung bién num1 sé hién thi bay gio la 11. Ham MyAverage tra vé két qua 20.3333333333333 va thay d0i gia tri géc cua sé liéu wu trong bién num1. Function MyAverage(numl, ByVal num2, ByVal num3) numl = num + 1 MyAverage = (numl + num? + num3) / 3 End Function Két qua ctia su thay déi Hinh 9-9: Két qua cdc bién khi khéng khai bao ByVal tres Aum Nhu’ vay, dé ngan can sw thay déi gid tri cung dung tw khoa ByVal p cho ham trinh tinh toan, diéu dé cho thay su quan tr bién. VBA a Ban sé co dug két qua trén néu bé qua tir khoa ByVal dteng truéc bién num1 trong ham MyAverage trong phan khai bdo bién. Néu muén thd tuc ham thay dai gia tri géc, ban khong can thiét phai thém t& khod ByRef vao, vi VBA da mac dinh truyén tham sé la ByRef. Khi str dung tt khoa ByVal trude tén bién, VBA sé truyén tham sé bang ee tri cho bién nay. Diéu dé co nghia la VBA sé tao ra mét ban sao cla di gu géc. Ban sao dé sé duoc : truyén toi ham. Néu ham thay ddi gia tri cla ban duoc truyén t6i, gia tri gdc sé khéng thay di - chi la copy sw thay di do. Biéu do gidi thich tai sao khi ham MyAverage da thay déi gid tri cla bién numt, nhung gid tri géc cla bién dé van nhw co. 9.5- Khai bao va stv dung mang (Array) Mang [a kiéu dé? liéu dc bit va hay duoc teng dung trong viéc thang ké, tinh toan,... nén duge trinh bay 6 muc riéng. Mang chtra cac bién dug sap xép theo trinh tu quy dinh. Méi bién dug goi la phan tt cla mang. Mang cd bién trén va bién dudi, cac phan ti trong mang 1a lién tuc. Vi du nhw danh sach hoc sinh trong mat lop, gid tri chi tiéu don lé trong doi voi mot chi tiéu trong mau. Cé hai loai bién mang: mang cé kich thudc cé dinh va mang dong (khong cé dinh, c6 thé thay déi duc). 9.5.1- Mang cé kich thuée ¢6 dinh Tht tuc Dim cé thé st dung dé khai bao trong mang co kich thuéc cé dinh (khéng nat thiét phai dua gid tri nao vao). Vi du: Dim Arr(4) Dim Myfriends(1 to 30) As String Dim Noisuy(1 to 20, 1 to 30) As Single Mang Arr (4) tao ramang 1 chiéu cha 5 > phan tte, Voi kiéu khai bao nay (4), phan tw dau tién (bién dudi) la Arr(0). Dé pl tt dau tién bat dau tu 1 thi ban phai khai bao Option Base 1 trén dau ctia tht tuc (Sub) Mang Myfriends (1 to 30) tao ra mang 1 chidu chtra duoc 30 chuéi. Mang Noisuy (1 to 20, 1 to 30) tao ra mang 2 chiéu voi kich thuée canh 20 x 30 (tuong ting 600 gia tri I sé) Ham co tén la Array & duéi cé thé tao nén mang tir cdc bién trong nd. Dim Array(*Michael”, “David”, “Peter”, “Jackson”) Khi sty dung ham Array, bién mac dinh co kiéu Variant. Bé xac dinh thong sé cla ham Array, phd bién dung 2 ham sau: - Ham UBound: tra vé phan tlr cudi cling ota mang. 109 - Ham LBound: tra vé phan tir dau tién cla mang. Vi dy 1: Hinh 9-10 la két qua cua tht tuc dui day: Option Base 1 Sub assignArray () Dim Arr(4) As String Arr(1) = “Thang 1” Arr (2) = “Thang 2” Arr(3) = “Thang 3” Arr(4) = “Thang 4” MsgBox Arr(1) & Chr(13) & Arr(2) & _ vbNewLine & Arr(3) & vbCrLf & Arr(4) End Sub Thang 1 Thang 2 Thang 3 Thang 4 Hinh 9-10: Céc phan tu trong mang Vi dy 2: Str dung ham UBound (béi den khéi 6 A2:B8 truéc khi thc hién thu tuc): Sub So_O_chon() MsgBox “Sé hang duoc chon 1a ” & UBound(Selection.Value, 1) MsgBox “Sé c6t dugc chon 1a ” & UBound (Selection.Value, 2) End Sub Hinh 9-41: Ser dung hém UBound trong mang 410 Ham Msgbox sé cho hién nép thoai théng bao & hinh 9-11, cc ban sé tam quen voi ham nay 6 muc 15.1. Ngoai ra, cdc ban cdn thay ham Chr (13), vbNewLine, vbCrLf 06 cling tac dung ngat dong trong khi thé hien noi dung (giéng nhu chtre nang bam phim Enter trong Word). 9.5.2- Mang d6éng Trong qua trinh tao mang, c6 nhéing trong hop ban phai thay ddi sé wong cdc phan tl trong mang do. Ban co thé str dung mang voi kich thu: fon, Sau do c6 thé xoa bé dé tra ving nho cho hé thong. Khi dé ban co thé su dung Redim dé dat lai kich thuéc cia mang ‘Trong vi du trén, s6 phan ti trong mang Arr(4) la 4 va ban co thé thay 461 thanh 6 phan tt bang cach str dung khai bao nhu sau: Redim Arr(6) Méi lan sty dung Redim, tat ca phan ter trong mang hién hanh bién mat. VBA khdi tao gia tri cho chting (Empty déi voi mang Variant, 0 cho mang sé, chudi réng cho mang chu6i, Nothing cho mang [a déi trong). Cach nay tién {01 khi ta cho thém phan ti moi hoc muén xod bot ving nho. Trong trréng hgp ban muén thay déi kich cé ctia mang ma khéng mudn mat dir ligu, ban dung Redim Preserve. Vi dy 4: Tho tuc Re_Array cho két qua tai hinh 9-12 Sub Re Array () ReDim Arr(4) As String Arr(1) = “Thang 1” Arr(2) = “Thang 2” Arr(3) = “Thang 3” Arr(4) = “Thang 4” ReDim Arr(6) As String \ Cac phdn tir ci sé bi mAt di Arr(5) = “Thang 5” Arr(6) = “Thang 6” MsgBox Arr (1) @ “ ~ " & Arr(2) @ -" @_ Arr(3) @“ - " § Are(4) @” ~ " & Arr(5) ©» - ” & aArr(6) End sub Vi du 2: Thi tuc Re_Array cho xem két qua tai hinh 9-12 Sub Re_P_Array() ReDim Arr(4) As String Arr(1) = “Thang 1” 111 Arr (2) Arr (3) Arr(4) = ReDim Preserve Arr(6) As String Arr (5) = “Thang 5” Arr(6) = “Thang 6” MsgBox Arr(1) & Chr(13) & Arr(2) & vbNewLine & Arr(3) & vbCrLf & _ Arr(4) & Chr(13) & Arr(5) & Chr(10) & Arr (6) (cing 1 déng) . End Sub c i vei nhieng dong ma lénh ngan, ban cé thé dén chting thanh 4 dong bang cach thém tly khéa “:" 6 gitra ching Hai dong lénh du'oi day Arr(1) = “Thang 1” Arr (2) = “Thang 2” co thé chuyén than Arr(1) = “Phang 1”: Arr(2) = “Thang 2” 9.6- Sw dung Type dé khai bao bién nguoi dung Ban co thé str dung chtre nang nay dé khai bdo bién déi tung cho riéng minh. Vi du bién déi twong cia ban lp [a Thongtin. Trong Thongtin cé thudc tinh Ten, Diachi, Tuoi, Quequan, Sau do, ban khai bao nhu sau (nam ngoai thu tuc, 6 trén) 112 Type Thongtin Ten As String Diachi As String Tuoi As Integer Quequan As String End Type Sau dé, ban xay dung thu tuc chtva bién déi tuong, ban sé tao ra mot doi tuong Danhsach thudc kiéu dif ligu Thongtin: Dim Danhsach As Thongtin TB) sheets 5, §) Tse 8 Fams Sub Hienthongtin() Bsr Din Denheach As Thongtin 2 ANodies | eee eraeer eB Node aniseseseen HB Nose uebox("Pen nguoi thu * :Dischi = InputBox("Die chi cu US" inputbox("Gue quan cua" 6 | one pf | cotegonieed 4} i eS GRREREMEZI rong tin v en eS Ten Je .tuoi & chr (10 hed aor Next End sub i = { Hinh 9-13: Cac thude tinh ty dong xuat hign khi khai bao bién theo Type Sub Hienthongtin() Dim Danhsach As Thongtin For i=1 Tol With Danhsach 113 Ten = InputBox(“Tén ngudi thir” & i) .Diachi = InputBox("Dia chi cia” & .Ten) .Tuoi = InputBox(“Tuéi cua” & .Ten) -Quequan = InputBox ("Qué quan cia” & .Ten) MsgBox (“Théng tin vé” & .Ten & Chr(10) & Chr(9) & “pia chi:” & .Diachi & Chr(10) & Chr(9) & “Tuéi : ” & .Tuoi & Chr(10) & Chr(9) & “Qué quan: " & .Quequan) End With Next End Sub Thing tin vE Nou Dia chi: x8 C3 Nhud - huy@n Ter Lim » a NO Teel: 24 Qué quan: xd Pr Cuiéhg “Ba Vi- Ha T. Hinh 9-14; Két qua khi thuc hién tha tuc Hienthongtin 9.7- Xac dinh kiéu bién bang ham TypeName Trong qua trinh xay dyng chung trinh, cé Ic ban can phai xac dinh kiéu bién ma minh chuan bi lam viéc toi. MGi kiéu bién co thudc tinh, phuong 414 thirc hoai dong khac nhau. Vi du nhu ban gan mét gia tri 4m hoac ion hon 255 cho bién kiéu Byte, hay cé gang lam tron bién kiéu String hoac lay cdn bac hai cla bién kiéu déi tugng (Object),... Nhiing céng viéc do déu khong thé thuc hién dugc va VBA sé bao I6i (hinh 9-15). Ngoai ra, trong khi tinh joan, kiéu cla bién bi thay déi sang dang khac ma ban khéng lwong hét duoc. Chinh vi vay ma ban kho tim dug 16i khi cdm thy ma lénh ctia minh a hoan chinh Range ("D2") .Value = B End Sub Runtime error ‘13 ‘Type mismatch Hinh 9-15: L8i xay ra khi ban [dy cn bac 2 cia bién déi tugng Ban khéng phai ban khoan vi VBA da cung cap cho chung ta ham Type- Name dé cd thé kiém tra dugc kiéu cla bién trong qua trinh x4y dung chuong trinh. Ham nay rat hivu hiéu khi ban kiém tra kiéu bién trong sudt qua trinh tinh toan. Cu phap cilia ham nay nhu sau ‘TypeName (varname) & cd bién ch tén bian tra vé 415 Bang 9-5: Kiéu bién tra vé boi ham TypeName Chudi tra vé Mota Byte Gid tri kigu Byte (96 nguyén tir 0 dén 255) Boolean Gis tri kiéu logic (True hog False) Integer Gid tri kigu s6 nguyen dang Integer Long Gid tri kigu s6 nguyén dang Long Single Gia tri kigu so Single Double Gid tri kiéu Currency Gi tei kigu tién 18 Date Gis tri kiéu ngay Swing, | Gid ui kiéu chudi “| Decimal Gid tri kiéu s6 thap phan Error Gié 113i Empty Cho bit ring khong 06 gid tri bat din gan cho bién. Bign Empty tuong Gng véi 0 trong ngit cinh s6, hoac chudi & khong trong ngit cinh chudi u dai bang Null Di ligu khong hop Ie Object Gid tri di wong | Object type | Kigu d6i twang duge thé hign bdi dmg dung Automation, vi du | nhu: Application, File, Range hoae Sheet. Unknown Doi tugng khong xac dinh duce ten. ~ | Nothing Bién doi trong ma da Khong con Néu varname la mang, chudi duo tra vé [a Variant voi dau ngoac don © dang sau - Variant(). Con déi voi mang chtva cac sé, TypeName tra “Integer()". Dudi day la vi du vé cach st? dung ham TypeName dé xac dinh tén bién Trong bang tinh ban nhap cac kiéu dif ligu trong mang "A1:A6" (hinh 9-16a) Sau dé, ban xay dung thi tuc TenBien co trinh duyét ting 6 va KA gia tri cla 6 dé. Phuong thire Debug.Print sé in kidu gia tri cia bién trong ctra sé Immediate. inh kiéu: sub TenBien(} Dim Vung as Range Set Vung = Range ("A1:A6") Vung. Select For Each cell In Selection Es Debug. Print TypeNewe (cell, meee Next rency Debug. Print Typelame (Vung) End Sub (b) (c) tr dung ham TypeName dé xac dinh tén bién Ngoai ra, khi da khai bao tén bién tong tng voi kiéu gid tri nao dé thi bién khéng co su thay ddi, trip trvég hop ban ding ham chuyén dai kiéu gia tri nhu' trong hinh 9-17 i | Sub chuyen_bien() i Dim Giatri As Single Debug. Print TypeName (Giatei) nt TypeName (CStr (Giatri) j ih 9-17: Kiu bién Giatri bi thay déi khi sir dung ham chuyén déi CStr 9.8- Vong de Bién trong tht: tuc c6 vong doi nhat dinh. Vong doi cla bién dugc xac dinh bang khoang théi gian ma bién nho duoc gia tri ctia no. Bién ding chung trong module hay trong du an dug duy tri gia tri dworc gan chiyng nao ma dy an dé dang dugc md. Bién cuc bd duge khai bao bang lénh Dim & trong thi tuc sé mat di cac gid tri khi thu tuc két thtic. Bién cuc bé cé vong doi dén chivng nado ma thii tue dang dug chay va chung cé thé thay ddi gia tri trong suét thoi gian chyong trinh chay. VBA cho phép ban c6 thé mé rong bién cl ch thay déi kidu Khai bao. Diéu quan trong a ban phai phan biét Guo cdc loai bién va pham vi hoat déng clia bién sao cho ¢ op vei cong viée cla minh. cua bién Chueng 10 si ouwe TRY GIP TRONS VBA Trong qua trinh viét macro, chac chan ban phai can dén tro giup. Khéng cé sach nao cé thé viét due hét vé ngén ng VBA ndi riéng va cac ng6n ngiy lap trinh ndi chung, vi nhdng kién thtrc trong do rat rOng In. Trong qua trinh xay dyng macro trong cla s6 Visual Basic Editor, chac chan ban phai st dung cac déi twong, thudc tinh, phuong thre hay ham co san trong VBA. Tat nhién sé cd ma lénh cé thé ban chwa biét hoac da quén cach sir dung, luc do Microsoft Visual Basic Help (ggi tat la Help) sé phat huy tac dung. Diéu co ban nhat dé sir dung duoc Help la ban phai biét tiéng Anh dé doc va hiéu dugc cac hung dan dé. Nhing ngui co trinh dé ve lap trinh tdt déu chu yéu sw dung sach ting Anh va doc trong Help. Noi dung trong Help la day di nhat dé ban tha hé tra ctru. Ndi dung trinh bay duéi day sé cho cac ban hiéu duoc mvc dé tién dung cua Help trong VBA nh thé nao. 10.1- Tro giup true tiép trong méi trwong VBA i Modules VoaProject( bite 1 Aa Integer 5: Sy Mert ActiveCell.Ofrset (2, 3) Select Bae | . @)sreez | | . 1 Shoes | 3 | 8) thavo | Oe Hinh 10-1: Cia sé Microsoft Visual Basic Help 418 Trong Itic'viét ma lénh, khi can tim hiéu mot ma lénh nao dé (vi dy nhu phuong thizc Select), ban cé thé truy c&p vao Help nhu sau - Chon myc cy thé (ban phai di chuyén chudt vao chér Select) - Sau do bam phim F1. Khi do cira sé Microsoft Visual Basic Help hién ranhu hinh 10-1 voi hwéng dan sir dyng phwong thre Select 10.2- Siv dung hép thoai tro gitip voi chu dé Dé siv dung hép thoai tro’ gidp voi chi dé (topic) cu thé, ban thyc hién cac buéc sau Vao clva sé Vistial Basic Editor dang mo (néu chua mé thi ban vao menu Tools/MacrosiVisual Basic Editer hode phim tat Alt + F11). y menu Heip, ban chon Microsoft Visual Basic Help (khong chon phim tat F1) - Ban c6 thé thyc hién bang cach stv dung chérc nang Search hoac 6 thé chon chii dé dang can tim trong danh muc. Cach nay hé tro’ rat tich cure khi ban tim hiéu vé van dé nao dé trong VBA Nhu hinh 10-2 dui day, vi dy muén tim hiéu vé cach stv dung ham cla worksheet trong VBA, ta gé ndi dung “Worksheet function in VBA” vao trong Search. Sau khi 4n Enter hoadc bam vao mii ten xanh phia bén phai thi nhan duoc 5 két qua cé lién quan. Luc dé,ta chi can chon cht dé nao chinh xac nhat, ndi dung chd dé sé thé hién & hinh 10-3, 10-4 | Setection.pastespecial Past: jectat “2 ectwatins} Sou, PasteSpecial | voAProje« Paste:niValues, _ hater = rece Operation:=ximuivipiy, | See She SkipBlanke:=False, — @ vera ecosctt Cee! Wek — v |? etn Ln of Wovksboct Functens Avatable to Yisual Ban B Worlsheerrurcean Popaty Friodule)tiodle = @ schsae Fut Alphabetic |cs . Sc Ie edie], trong truong hop te | Woe i che ding ky tu gach i Function in VBA, "You can use most Sirosoft Excel worksheet functonsin your Visual worksheet functions you car use, see (st of et Functions “al Wote Some worksheet functions aren't usefu! in Visua! Basic, For excarple, the Concatenate fincton isn't needed because ia Visual Gasic you can use the & operator to ein madtple text values, Calling 3 Worksheet Function from Visual Baste sic, the Microsoft Excel morisheet funcbons ai avsisbie through the Worksheetfunction ‘The followng Sub procedure uses the Min werlsheet functon to detenvine the eralest wales in 9 range of coll. First, the verisbe me 3 declured os a Range object, and then it’s set (orange ALICII on Sheetl, Another variable, answer, is assigned the vest of sop! tion fo myR. Finally the vila ammten i dislawed in a maccare hey Hink 10-4: Chi d@ Vé si dung ham cia Excel trong VEA 10.3- SW dung vi du mau cla Exce! Excel dua ra mét sé file vi dy co tén la Samples. xls, file nay dé cap dén kha nhiéu tng dung chuyén sau cla Excel va nhding tién ich moi, Gc bis trong linh vc VBA. Hau hét doi voi méi phién ban Excel khée nhau thi dwong 420 dan dén file nay ct phién ban moi cti tai wong dan sai snhau. Tuy ahién, tr Exce! 2002 tré di, khong thay mau nay. Trong Excel 2000, ban cé thé tim thay file nay C:\Program Files\Microsoft Office\Off: 210\Samples.xls Trong Sampies.xls, mai sheet hvong dan mot dang céng viéc. Ndi dung 0 lién quan dén VBA Ia Chart Labeling, Repeating Tasks, Arrays, API examples, Events, Automation, ADO,... Cac ban cé thé kham pha dug nhiéu diéu bd ich trong Samples.xis 10.4- Si dung Internet Day la Wy dung tro gitip hién dai nhat trong thdi dai Internet toan internet ta cong cu rat hiru hiéu trong viéc tim hiéu moi van dé trén the Ban cé t ung tiéng me dé hay tiéng Anh dé tim kiém ndi dung co lién quan trong trang web chuyén vé tim kiém nhu thém ca trang web tim kiém Viet Nam: www.monava.vn, http://www.google.com.vn hoac http:/www.google.com. Vi du khi ban mo trang htip://www.google.com.vn thi ctva sé trang web hién ra nhu hinh 10-5 Favorites Tools Help ‘Page> Took ] Xem Trang O3u Ten Tim Doe Tim kiém: @ wets © nhiing trang tar Viet Ham Google.com. c6 sn bang ting’ English Francais Hinh 10-5: Cifa sé http://www.goosle.com.vn 124 é tim hiéu vé thuat ngir hay ndi dung lién quan, gd ndi dung cn tim kiém (vi du nhw “inputbox Excel”), ban c6 thé tim kiém trén toan bé trang web hay chi & Viét Nam. Trong trong hop nay, chon "nhiing trang te Viét Nam" va bam vao nut “Tim v6i Google”. Va chi sau khodng thd gian rt ngan, ban da 66 théng tin vé ndi dung muén tim kiém & cac trang web & Viét Nam. Nho cé céng cy tim kiém nay, ban mdi biét bén ngoai nguoi ta 44 nghién ctru vé ndi dung nay nhw thé nao? Nhing néi dung lién quan dén kién thc VBA dé ban gé vao tim kiém nhu' “VBA, Excel, macro, free code VB”... Cé rat nhiéu trang web, dién dan lién quan dén Excel va VBA, nguén kién thc trong do rat rong dé ching ta hoc héi. | Google Groups: microsoft put | MS Excel Tat ef 2 bai word =InputBox¢ ssswetd “tnputBiox vung trong excel nit fils Fxcel méiva ' inpurtBox 63 glam Kgldy) cho timer isn eak oe Hinh 10-6: Google tim kiém néi dung “inputbox Excel”

You might also like