You are on page 1of 492
PHAN TU HUGNG Lap Trinh (Visual Basic for Applications) (In tai ban) NHA XUAT BAN THONG KE HA NOI, nam 2009 LOI NOI DAU Hién nay, phn mém Excel da tro nén than thude déi voi nhiing ngw thong xuyén lam viée véi bang tinh va biéu do. Khé néing tinh todn, phan tich va wit ly dit liéu tuyét voi ca phan mém Excel c6 thé gitip ching ta gidi quyét duoc nhiéu loai céng viée khéc nhau. Bai cb nhiéu stich tiéng Viet hudng dan ste dung phan mém Excel tir co ban dén nang cao, ting dung tir nginh kF thudt dén linh vive kinh té. Tuy nhién, phén lon sach a6 chi huéng dén khai théc cdc céng cu va chite nang sén c6 trong phan mém Excel, Voi doi hoi cita cong viee ngay cang cao thi viee stt dung céng cu va chite nang san cé trong phan mém Excel nhiéu khi rat khé khan hode khéng thé dap ting duge. May man thay, Microsoft dé hé tre ngén ngit lap winh Visual Basic for Applications (goi tat la VBA) tich hop trong phan mém Excel (cing voi cdc phan mém khac trong goi Office). La ngén ngit lap trinh Visual Basic (VB) phat trién trong ting dung, VBA da gitip phan mém Excel cé kha nang tuy bién cao, vot ra khoi gibi han bang tinh thong thong. Sit dung VBA cting voi céc céng cu san cé trong phan mém Excel gitip ching ta co thé gidi quyét doe nhiéu bai todn phite tap voi khé nang tw déng héa cao, sin phdm c6 thé trong duong vi céc phan mém chuyén dung. Ngon ngit VBA rét gdn giti voi VB, trong khi dé VB la ngén ngit duve str dung pho bién & Viet Nam cing nhu todn thé gidi vi dé sit dung va ngudn sdch va, tdi liéu phong phi. Mét sd trwong dai hoc trén thé gidi da dua VBA vdo gidng day chinh thitc. Con tai Viet Nam, nhiéu ngwoi cing rat quan tam dén ngén ngit nay, daic biét la nhitng ngudi lam viée trong linh vuc dia chat, khai thic mo, xdy dung, giao thong, thuy loi, tai chinh, ké todn, kinh té,... Hién nay, Truong Pai hoc Mo Bia chat, Tredng Dai hoc Giao théng vn téi, Truong Dai hoc Xay dyng da dia ngén ngit VBA vao gidng day trong mot sé chuyén nganh. Hon nita, khi nam duge VBA trong Excel, ban cé thé dé dang nam bit VBA trong AutoCad, day la mot phan mém chuyén vé linh vue dé hog rat néi tiéng thudng duge sir dung trong cde ngdnh kF thudt. Tuy nhién, sach huwéng dan stv dung VBA bang tiéng Vier thi rat hiém hode chi duge dé cép rat han ché trong cdc tai lieu c6 lién quan Vi vay, cudn sdch nay hy vong dap tmg mét phan nhu cau cia nhiing ai quan idm dén ngén ngit VBA noi chung va ting dung trong Excel néi riéng 3 Trong lan tai ban nay, cudn séch dé duge sita aéi, bb sung cho phi hop vd dé hiéu hon. Mét.sé doan code dugc trinh bay lai cho hop ly: nhém gitip ban doc dé ding tiép can hon voi ctta sé kim vige cia VBA Toi xin cém on cée thanh vién trong dién dan www giaiphapexcel.com va dic biét la Ban quan tri da gép ¥, cung cap nhiéu kién thite cing nh ede san phdm ting dung ctta VBA dé cudn sich duoc hodn thién. Téi ciing xin giti Ioicdmon dén cde anh Lé Van Duyét (Ci ‘ng ty TNHH Dunlopillo - TPHé Chi Minh), Nguyé én Duy Tuan (Trrong Pai hoc Cong nghiép Ha Néi), Dao Viet Cudng (Cong 0» Co phan Du lich va Thuong mai Vinpearl ~ Nha Trang), Nguyén Van Son (Cong ty Cé phdn Nay dung bat cing - Hai Phong)... da tan tinh gitip dé t6i hodn thanh cudn séch nay, Tée gid MUC LUC Chwong t: GIG! THIEU VE VISUAL BASIC FOR APPLICATIONS Chuong 2: GHI VA THUC HIEN MACRO 2.1- Tao macro bang chire nang Recorder Macro 2.2- Thue hién macro khi sir dung bang diéu khién macro 2.3- Thue hién macro khi sir dung phim tit (shortcut key) 2.4- Tam dimg khi thyc hign macro Chuong 3: CACH THUC HIEN MOT MACRO DON GIAN 3.1- Thue hién macro tir m6t déi wrong trong worksheet 3.2- Thue hién macro tir nit lénh trong thanh cong cu 3.3- Thuc hién macro ttr thanh menu 3.4- Thay déi Iya chon trong macro Chong 4: CUA SO VISUAL BASIC EDITOR (VBE) 4.1- Cau trite ctra sé VBE 4.2- Cita s6 soan thao code (Code window) 4,3- Cita 36 Immediate 4.4- Higu chinh trong VBE 4.4.1- Thay ddi tén ctia tht tuc 4.4.2- Stra dOi ma 1énb trong thi tuc 4.4,3- Tao thém Module trong cia sé VBE 4.4.4- Gd bo module Chuong 5: LAM VIEC VOI FILE EXCEL CO CHUA MACRO 5.1+ Sir dung chite nang Security 5.2- Str dung cdc chong trinh diét virus 5 Chuong 6: UU, NHU'O'C DIEM CUA CHUC NANG TU GHIMACRO 6.1-Uu diém cita chtte néing tr ghi macro 6.2- Nhuge diém cia chite nang ty ghi macro Chuong 7: NGON NGU VISUAL BASIC FOR APPLICATIONS 7.1- Cac déi tong (Objects) 7.2- Cac phuong thire (Methods) 7.3- Cac thudc tinh (Properties) Chuong 8: MOT SO DOI TUGNG CO BAN TRONG EXCEL 8.1- Déi tugng Application 8.1.1- Thudc tinh Calculation 1.2- Thude tinh ScreenUpdating 8.1.3- Thude tinh DisplayAlerts 8.2- Déi tuong Window 8.3- Déi tuong Workbook 8.4- Doi tong Worksheet 8.4.1- Xac dinh ac théng tin trong Worksheet 8.4.2- Nhdp dit ligu vio trong Worksheet 8.4.3- Diéu khién Worksheet 8.5- Doi tugng 6 (cell) va khdi 6 (range) 8.5.1- Thude tinh Range 8.5.2- Thudc tinh Selection 8.5.3- Thudc tinh Cells 8.5.4- Thude tinh Offset 8.5.5- Thude tinh Rows va Columns 8.5.6- Cac kiéu thude tinh khac trong tham chiéu 6 a 58 60 62 66 67 67 68 8.5.7- Xac dinh thén, 8.5.8- Tao ving truc tiép (khdng sir dung VBA) 8.5.9- Tao ving bang cach str dung VBA 8.5.10- Lam viée véi nhiéu ving 8.5.11- Di chuyén, sao chép va xoa 6 (khdi 6) 8.5.12 Mot s6 thude tinh hitu ich cita déi tong Range 8.6- Tra citu va tham khao ddi tuong Chwong 9: KHAI BAO VA SU DUNG BIEN TRONG VBA 9.1- Khai bao kiéu gia tri cho bién 9.2- Cac toan tir trong VBA 9.3- Biéu thire 9.4- Gan gia tri cho bién, hing va déi trong 9.4.1- Gan gid tr] cho bién 9.4.2- Gan gia tri ld hing s6 cho bién 9.4.3- Gan gid tri cho bién déi trong 9.4.4- Hudng dan truyén tham s6 bang gid tr 9.5- Khai bao va sir dung mang (Array) 9.5.1- Mang cé kich thuéc cé dinh 9.5.2- Mang dong 9.6- Sir dung Type dé khai bao bién nguai ding 9.7- Xéc dinh kiéu bién bang ham TypeName 9.8- Vong dai cia bién Chuong 10: SU DUNG TRG GIUP TRONG VBA 10.1- Tro gitip truc tiép trong méi trudng VBA 10.2- Sir dung hép thoai tr gitip voi chit dé 86 87 87 88 89 93 96 1s 8 119 10.3- Sir dung vi du mau cita Excel 10.4- Sit dung Internet Chuong 11: THIET LAP MOI TRUGNG LAM ViEC L1.1- Sir dung Options 1.2- St dung VBA. Project Chwong 12: PHUONG PHAP TU XAY DUNG MACRO 12.1- Xay dung macro 12.2- Ngiit dong khi ma lénh qué dai 6 12.3- Cac i xy ra khi xay dung macro Chuong 13: SU DUNG VA XAY DUNG HAM TRONG VBA 13.1- Str dung céc ham sin cé trong Excel 13.1.1- Goi cdc ham trong Worksheet tir VBA 13.1.2- Chén ham s6 trong Worksheet vao 6 13.2- Str dung cdc ham trong VBA 13.2.1- Ham todn hoc 13.2.2- Ham xae nhan dit ligu 13.2.3- Ham chuyén ddi gitta ede kiéu dit ligu 13.2.4- Ham vé xi ly chudi 13.2.5- Ham dinh dang dit ligu 13.2.6- Ham tao s6 ngau nhién 13.2.7- Ham vé ngay gid 13.2.8- Ham vé dé hoa 13.2.9- Ham chuong trinh 13.2.10- Cac ham khac 120 121 123 124 13.3- Xay dung ham trong VBA 13.3.1- Phan biét ham ty lap véi thi tuc 13.3.2- Cach xdy dung ham 13.3.3- M6 ta ndi dung ham 13.3.4- Tao va str dung ham trong Add-Ins 13.3.5- Goi ham ttt thi tuc Chuong 14: CAU TRUC DIEU KHIEN 14.1- Diéu khién c6 didu kign 14.1.1- Diéu khién IF 14.1.2- Diéu khién Select Case 14.1.3- Diéu khién And 14.1.4- Diéu khién Or 14.1.5- Diéu khién sir dung nhiéu And va Or 14.2- Diéu khién vong lap 14.2.1- Diéu khién Do ... Loop 14.2.2- Diéu khién Do While ... Loop 14.2.3- Diéu khién Do ... Loop While 14.2.4- Diéu khién Do Until ... Loop- 14.2.5- Diéu khién Do ... Loop Until 14.2.6- Diéu khién For ... Next 14,2.7- Diéu khién For Each... Next 14.2.8- Lénh thodt (Exit) 14.2.9- Vong lap ling 14.2.10- Diéu khién With - End With 165 165 165 169 170 176 178 Chuong 15: HOP THOAI TRONG VBA 15.1- Hp théng bao Message box (Msg Box) 15.1.1- Cac loai théng diép trong buttons 15.1.2- Théng sé cia nut diéu khién 1.3- Cac biéu trong théng digp trong Msgbox 15.1.4- Xay dung tham sé cho MsgBox 15.2- Phuong thite 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 xtr ly 18i 16.2.1- Xae dinh va lim viée véi nhimg 13i xay ra 16.2.2- C; +h “bay” 16i chi tiét bang On Error 16.2.3- G6i gon xr ly 16i 16.2.4- Nhiing trudng hop nén bé qua 13i 16.2.5- Xac dinh Idi cu thé 16.2.6- Léi do ngudi sir dung cé y 16.3- L6i lap trinh va ky thuat xtr ly 164 16.3.1- Cac loai 16i lap trinh 16.3.2- Xac dinh 1éi va ky thual xir ly 13i 16,3.3- Str dung c6ng cy stra Ii cia VBA (VBA Debugger) 16.4- Cac phuong phap giam 13i 16.5- Nhitng théng sé vé ma lénh Ii trong VBA Chwong 17: LAP TRINH SU KIEN TRONG EXCEL 2003 17.1- Chi din vé cdc thil tue cia su kién 17.2- Lam hitu hiéu va v6 hiéu cdc su kién 194 194 195 195 195 197 200 217 224 17.3- Trinh ty cdc su kién 17.4- Céc su kign déi v6i Workbook 17.4.1- Su kign Activate 17.4.2- Su kién Deactivate 17.4.3- Su kign Open 17.4.4- Sur kién BeforeSave 17.4.5- Sy kién BeforePrint 17.4.6- Su kign BeforeClose 17.4.7- Su kién NewSheet 17.4.8- Su kién Window Activate 17.4.9- Su kign WindowDeactivate 17.4.10- Su kién WindowResize 17.5- Cac su kign d6i v6i Worksheet 17.5.1- Su kign Activate 17.5.2- Su kign Deactivate 17.5.3- Sy kign SelectionChange 17.5.4- Sy kién Change 17.5.5- Su kign Calculate 17.5.6- Su kign BeforeDoubleClick 17.5.7- Su kién BeforeRightDoubleClick 17.5.8- Su kign FollowHyperlink 17.5.9- Sy kign PivotTableUpdate 17.6- Nhiing su kién khong lign quan véi cdc déi trgng 17.6.1- Sy kign OnTime 17.6.2- Su kién Keypress (bam phim) 11 Chwong 18: NHUNG Vi DU VE LAP TRINH VBA 18.1- Vi du vé lam viée véi ving 18.1.1- Sao chép ving diac biét 18.1.2- Sao chép ving chua xc dinh 18.1.3- Di chuyén ving 18.1.4- Duyét timg 6 trong ving xéc dinh 18.1.5- Thi tue dé xoa dong tréng 18.2- Thi du vé lim viée véi workbook va worksheet 18.2.1; Tha tue xoa sheet rong 18.2.2. Thu tuc tim sheet trong workbook 18.2.3- Di chuyén nhanh t6i mét sheet nao dé 18.2.4- Khoa 6 chtta cong thite 18.3- Thay di cai dat trong Excel 18.3.1- Thay déi cai dat kiéu Boolean 18.3.2- Thay ddi cai dat khong phai 6 kiéu Boolean 18.4- Mt sé ham va thi tuc hitu dung khéc 18.4.1- Ham chuyén sé sang chit 18.4.2- Ham tach s6 tir trong chudi 18.4.3- Ham vé tinh todn géc 18.4.4- Tho tuc sao chép dit liéu theo kiéu dac 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 Chuong 19: SU DUNG VA XAY DUNG BANG DIEU KHIEN TRONG EXCEL 19.1- Sir dung bang diéu khién sin cé trong Excel (Dialog Boxes) 19.1.1- Bang diéu khién File Open va File Save As 12 248 261 262 262 276 277 279 282 285 288 291 295 300 19.1,2- Phuong thire GetOpenFile va GetSaveAsFilename 307 19.2- Xay dung UserForm trong VBE 310 19.2.1- Cach kim hign UserForm trong bang tinh 312 19.2.2- M6 ta cdc diéu khién trong UserForm 313 19,2.3- Cac céng cy tao UserForm 316 19.2.4- M6t s6 thude tinh ctia cdc digu khién 323 19.2.5- Sir dung chudt phai tai UserForm 327 19.2.6- Str dung chuét phai tai cae diéu khién 329 19.2.7- Cac sur kién trong UserForm va diéu khién 329 19.2.8- Quy ude vé dat tén cho diéu khién trong UserForm 332 19.2.9- Vi du vé xy dung UserForm 333 19.3- Xay dung DialogSheet trong workbook 362 19.3.1- Céch lam hign va déng DialogSheet trong bang tinh 364 19,3.2- Cac diéu khién trong DialogSheet 365 19.3.3- Thudc tinh ctia cae diéu khién trong DialogSheet 367 19.3.4- Sir dung ham Excel dé lién két gitta DialogSheet voi Worksheet 19.3.5- Sir dung VBA dé lién két gitra DialogSheet v6i Worksheet 19.4- Xay dug Form trong WorkSheet Chuong 20: TAO THANH CONG CU VA THUC DON BANG VBA 20.1- Tao thanh cong cy Toolbar 20.1.1- Tao thanh céng cu (Toolbar) méi 20.1.2- Xo thanh cong cy 20.1.3- Sir dyng eae digu khién trong CommandBar 20.1.4- Thém cdc diéu khién vao CommandBar 13, 20.1.5- Sir dung cdc thuGc tinh ctia diéu khién 20.1.6- Sir dung cdc phurong thire 20.2- Tao thutc don Menu 20.2.1- Lap trinh véi menu 20.2.2- Tao thure don con (Submenu) 20.2.3- Thay ddi trong thure don tit 20.2.4- Tao Popup menu mdi clia déi tuong 6 hay khdi 6 Chuong 21: LAM VIEC VOI FILE VA THU’ MUC VOI VBA 21.1- Tim tén cua thu muc hién tai (ham CurDir) 21.2- Thay di tén cita file hoac thu muc (ham Name) 21.3- Kiém tra vj tri cia file va thu muc trong 6 dia (ham Dir) 21.4- Xac dinh ngay va thdi gian sira ddi file (ham FileDateTime) 21.5- Xac dinh kich c& ctia file (ham FileLen) 21.6- X4c dinh va thiét lap thudc tinh cta file (ham GetAttr va SetAttr) 21.7- Thay adi thiét lap thu muc va 6 dia (Iénh ChDir va ChDrive) 21.8- Tao va xoa thu muc (lénh MkDir va RmDir) 21.9- Sao chép file (Iénh FileCopy) 21.10- Xod file (lénh Kill) 21.11- Mot sé ham hu ich ctia file va thu muc 21.11.1- Ham kiém tra sy tn tai cita file 21.11.2- Ham tach tén file tir duong din 21.11.3- Ham kiém tra sy ton tai ctia duéng din 21.11.4- Ham kiém tra sy ton tai Tén ctia mot khoang 14 400 404 406 408 4t 413 Al7 418 418 419 424 425 426 427 428 21.11,5- Ham kiém tra sheet cé ton tai hay khong 21.11.6- Ham kiém tra Workbook cé mo hay khong Chuong 22: NHUNG CAU HO! HAY GAP TRONG VBA Chuong 23: DIEU KHIEN CAC CHUGNG TRINH KHAC BANG VBA 23.1- Khéi dong mot chuong trinh khac tir Excel 23.2- Di chuyén gitia cdc churong trinh ting dung 23.3- Diéu khién cdc chuong trinh khac 23.4- Tim hiéu vé lién két (Binding) 23.4.1- Lién két mugn 23.4.2- Lién két som 23.5- Tao cdc déi tong Automation 23.5.1- Str dung him CreateObject 23.5.2 Sir dung ham GetObject 23.5.3- Sir dung tir khoa New 23.6- Lién két dir ligu gitta cde chuong trinh trong Window 23.6.1- Diéu khién Word tir Excel 23.6.2- Didu khién PowerPoint tir Excel 23.6.3- Didu khién AutoCad tir Excel Chuong 24: LIEN KET GIUA EXCEL VOI VISUAL BASIC 6.0 24.1- Tao du an ActiveX DLL 24.1.1- Cach tao lin két don gian ActiveX DLL mét huéng 24.1.2- Céch tao lign két hoan thién ActiveX DLL hai huéng 24.1.3- Hién thi Form ctia VB 6.0 trong Excel 24.2- Diéu khién Excel tir Standard EXE cita VB 6.0 Tai liéu tham khao 442 47) 73 478 482 487 Chong 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é ctia tap doan Microsoft. Phan mém Excel duoc stv dung rat rong rai va cé thé eng dung trong nhiéu nganh nghé. Tuy nhién, déi voi nhiing yéu cau tinh todn, xt? ly phic tap, néu chi don thuan st dung phép tinh trong Excel thi khong thé giai quyét duoc triét dé, hay phai ton nhiéu cong thie xay dng hoa bat budc phai thao tac mét cach tht cong. DS khdc phuc nhing mat han ché dé, ngén ngiF lap trinh cé tén Visual Basic for Applications (VBA) duoc tich hop sn trong phan mém Excel sé git ban co thé gidi quyét triét dé van dé trén. VBA Ia ng6n ngé lap trinh phat trién trong méi trudng Office boi tap doan Microsoft. Cac phan mém Excel, Word, Access, PowerPoint,... va ca phan mém chuyén linh we dé hoa... AutoCad (tl phién ban 2000 tré én) déu co thé stv dung VBA. Tw Iie ban dau, ban c6 thé sv dung macro trong Excel 3 (ra doi nam 1990), Excel 4 (ra doi nam 1992), Excel 5 (ra doi n&m 1994). Khi do, macro du’ vidt bang ng6n ngiv XLM va la mat phan trong bang tinh Excel, kha nang tng dung con han ché. Excel 98 (ra doi nm 1997) da danh dau sy phat trién cla macro bang viéc xdy dyng ng6n ngi@ lap trinh Ung dung Visual Basic voi ctra sé Microsft Visual Basic hoan toan déc lap. Excel phién ban truéc khéng mo duc phién ban nay. Cho dén nay, ngén ngir VBA da cé nhting bude phat trién vot bac voi mat sé kha nang khong thua kém nhiéu so voi nguoi anh em Visual Basic 6.0 (VB). Mac dit, bd Office 2007 da xuat hién trén thi trudng voi giao dién va mt sé tinh nang cd sv thay déi, nhung cau tric ng6n ngi cling nhu giao dién cla VBA van tuong ty nhu trong Office 2003. Macro (cén goi la tht: tue hay chong trinh con) la mét thanh phan ctia ngén ngi VBA, dug tao ra dé Excel thyc hién theo yéu cau boi cdc cau lénh chiva trong né dé hoan thanh mét céng viée nao dé. Cac cau lénh trong macro duge xay dung tiv cac ky tu’ gd phim dé ty dong thye hién cac céng viée mang tinh lap di lap lai hoc tang téc dé cho viée nhap, xt ly sé ligu. 17 8) sheet BB) steate 1) Sheet 2 (Sheet? 8) theviorktook 0 Prbordes Hinh 1-1: Civa s6 Microsoft Visual Basic trong Excel VBA gilip chung ta thy hién céc céng viéc trong Excel nhanh hon rét nhiéu so véi tinh toan thi cOng, c6 thé giai duoc nhding bai toan phire tap trong nhiéu linh vue. Cac céng viée trong Excel c6 str dung dén VBA thi tac 6 xt IY div ligu va d chinh xc cao, sén phdm ting dung mang tinh chuyén nghiép. VBA 6 hai ting dung chinh fa thi tuc (Sub - con goi la chung trinh Con) va ham ty lap (Function). La ngén ngG lap trinh ing dung trong mai truéng Office nén VBA tan dung duoc phan nén ta bang tinh trong Excel. Vi vay, ban khong can phai thiét ké hay phdi giao dién tt ban dau nhu cac phan mém chuyén vé lap tinh. Mat khac, VBA san 6 6 bén trong Excel nén khi ban cai dat Office trong Window, VBA sé ty dong dugc cai kem theo. Bé la nhéing loi thé khi st? dung VBA. Ngoai nhiing wu diém thi VBA cing t6n tai mét sé nhuoc diém nhu tinh bao mat kém, khéng bién dich thanh file chuong trinh dé hoat dng doc lap ma phai di kem cling voi file trong Excel,... Ngoai ra, mat sé chuong trinh Giét virus trong nude khong phan biét dugtc macro véi virus nén dé bi xod mat macro khi quét virus. 18 Dé hoc duoc ngén ngif lap trinh VBA, ban can nam duge kién thirc co ban va ndm bat duge cac déi tuong, phuong thire lam viéc trong Excel. Nhiing ngwoi biét lap trinh VBA trong Excel cé thé phat trién theo nhiéu dinh hung khéc nhau nhu lap trinh VB6.0, VB.NET, lap trinh tng dung VBA trong cac phan khac cia Office va cd phan mém chuyén dé hoa AutoCad, hay bAt ot phan mém tng dung nao cé lién quan dén Visual Basic. Cac linh vue ky thuat, kinh té, tai chinh,... déu co thé Ging dung ngén ngi VBA trong chuyén mé6n ctia minh. Chuong 2 GHIVA THUC HIEN MACRO SU dung chi? nang ty ghi macro (Recorder Macro) la mét y tuéng hay dé ting bude hoc ngén ngir VBA, nhét la Itic dau tim hiéu v8 VBA. Voi che nang nay, Excel sé ghi lai toan bé cac cong viée ban da thy hién trén bang tinh (bang cdc ky ty doe gé tw ban phim) mét cach tuan tw va khi 46, ban c6 thé nam bat duge qua trinh thurc hién céng viée nho viéc chay (thi hanh) macro bdi cde cau lénh trong macro dé 100% Al | Visual Basic Editor AltHFLL | rosoft Script Editor Alt+-Shift-+F11 Macro name: |macro3 a | Shortcut key Store macro in: Ctrl “This Workbook ® Description: ae ee : Macro recorded 10/21/2006 by Phan Ty Huengl OK | C : Cita sé Record Macro 20 Trong suét thoi gian ghi, macro da duc lwu lai voi ten xac dinh trong module, module dug tao ra trong qua trinh ghi va la mot phan ctia Workbook. Macro dugc ghi lai 6 thé dug luu trong This Workbook (Workbook hién hanh), New Workbook (Workbook mdi) hoac trong Personal Macro Workbook (nh@ng macro s@ hu riéng). Nhéng macro dug lu trong Personal.xls d&u stv dung dug khi ban mé Excel ra. Cac macro trong cdc Workbook khdc nhau co thé str dung bat clr Itic nao khi cdc Workbook dang mé (ké ca str dying chting tir Workbook khac). Diéu kién dé co thé thwe hién ghi macro: 1. Trén workbook dang dug kich hoat (Activate Workbook) 2. Trén workbook mdi Chie nang nay chi khéng thye hign khi ban dieng ghi. Chtre nang ty ghi khong c6 tac dung déi voi mét sé cong viéc. Vi du: nh trong qua trinh ghi macro, mét 6 duge chon (select) & hién tai sé khong dug ghi lai céc hanh d6ng xay ra voi né khi ban khéng thyc hién céng viéc trong 6 dé. Ngoai ra, Excel cling khéng ghi lai cdc céng viéc khi dang st? dung bang diéu khién (dialog box) cho dén khi ban bam nuit OK trén bang diéu khién dé. Bé hiéu ro hon thi-ban hay thy hanh c6ng viée ghi macro nhu & duéi day: 2.1- Tao macro bang chtrc nang Recorder Macro Ban hay tién hanh tao macro dau tién bang chtvc nang ty ghi macro. Noi dung macro nay trinh bay t6n va dia chi cla ban, cach thc hién nhu sau 1. Trong Tools/Macro, chon Record New Macro (hinh 2-1). 2. Trong Macro name: gé Address_abs dé dat tén macro dé (hinh 2-2). Dac diém la ky tu dau tién la cia ten macro phai IA chi? khong cé d4u (c6 nghia khéng phai la chit tiéng Viét). Con cac ky ty khac co thé la chi, sé hodc ky tw gach dui (ky ty _). Cac ky tw dac biét nhu khoang tréng (Space), @, %, $, #, &... khong duoc chap nhan, ban cé thé dung ky tu’_ dé tach tén trong macro. Quy dinh viét tén cla macro hay ham ty lap dé cap chi tiét hon trong myc 9.1. 3. Chuyén sang Shortcut key: dé tréng (ban sé thu'c hién viée nay sau). 4. Trong Store macro in: dé mac dinh la This Workbook. 5. Trong Description: ban g6 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 no dén vi tri khac (néu thay can thiét) bang cach bam trai va gid chudt tai thanh tiéu dé cia thanh Stop Recording. 8. Trong thanh Stop Recording, nut Relative Reference mac dinh bi mo (khéng tac dung - hinh 2-3). 9. Trong Sheet1, bam vao B3 va gé tén clia ban. © & dudi go tén lop, tiép theo Ia tén trudng ma ban dang hoc. Chwy la ban sty dung chi? khéng co dau, vi néu cé dau thi néi dung chi? dé trong macro sé khé doc 10. Cho toan b6 cac chi? dam va nghiéng. 11. Bam vao 6 B6. 12. Trong Stop Recording, bam vao nuit Stop Recording. Nguyen Van Hung Lop DCCT-DKT K48 Truong DH Mo Dia chat wt» chet { sheer sheer / Ready Record Hinh 2-3: Qué trinh ghi macro Nhu vay, macro cé tén Address_abs da duc ghi lai. Nnivng 6 ma an da str dung trong qué trinh ghi dugc thé hién dui dang dja chi tham chiéu tuyét déi (tén 6 gdm c6 hang va cét, vi du A2, CD78....). Vi vay, nhing 6 trong Worksheet do sé thyc hién khi ban cho thyc hién macro, tén ban, tén lop va tén trvong sé duc tao ra dung vi tri trong Worksheet. Tiép theo ban sé tao mét macro giéng nhw trén cling bang cach ghi macro. Chi khac la Macro truéc da chon khdi 6 (hay Ia vung) cé dia chi tham chiéu tuyét-d6i, con Macro sau sé sir dung quan hé tham chidu 6 tuong 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: g6 Address_Ref dé dat tén macro dé (hinh 2-2) aR ON Trong Shortcut key: Gite phim Shift va go cht A, nhw vay phim tat 98 la Ctrl+Shift+A. Ban nén tranh truong hop phim tat dé chay macro tring voi phim tt sn c6 trong Excel. Néu chang may ban tao phim tat chay macro tring voi phim tt trong Excel thi khi bdm phim tat, macro dé sé chay va phim tat sé khong cé tac dung. 2 Trong Store macro in: dé mac dinh la This Workbook N Trong Description: ban g6 néi dung sau Enter address starting in activate cell position Bam OK Thanh Stop Recording sé xuat hién. Ban c6 thé di chuyén né dén vi tri khac néu thay can thiét. © @ 10. Trong thanh Stop Recording, bam vao nut Relative Reference cho sng lén (c6 tac dung nhu hinh 2-3), Excel sé tiép tye ghi macro v6i quan hé tong déi cho dén khi nao thoat khoi Excel hoac ban bam lai vao nut Relative Reference. 11. G6 tn ban, lp, tén trudng va dia chi trong cac 6 B11, B12, B13 va B14. Ndi dung the hién nhw sau: Nguyen Van Hung Lop DCCT-DKT K48 Truong DH Mo Dia chat xa Dong Ngac, Tu Liem, Ha Noi 12. Cho toan bé cac cht dam. 13. Bam vao 6 B15. 14. Trong Stop Recording, bam vao nut Stop Recording. Ban cé thé str dung chi? co dau tiéng Viét, tuy nhién khi sang ctra sé VBE thi chi do sé rat kho doc. Ghi ché: Khi str dung quan hé tham chiéu 6 tuong déi, chon 6 géc (ActiveCell) truéc khi chon ntit Relative Reference, cac 6 khac quan hé tham chiéu tuong déi voi 6 géc do. Ban cé thé la chon hén hop dia chi tuyét déi va twong dai trong qua trinh ghi macro. Tuy nhién, ban khdng nén str dung phuong phap nay vi qua trinh tham chiéu sé lon x6n, khé theo di. 23 - Dé stv dung tham chiéu twong déi trong sudt qua trinh ghi macro, nut Relative Reference luén sang (cé tac dung). - Dé stv dung tham chiéu tuyét di trong suét qua trinh ghi macro, nut Relative Reference ludn t6i (khdng tac dung) 2.2- Thyc hién macro khi st» dung bang diéu khién macro Thyc hién mét macro 1a qua trinh thi hanh cac lénh chtra trong macro dé (con ggi la thuc thi hodc la chay macro. Ban cho thy 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. Bdm vao macro c6 tén Address_abs trong danh sach macro (hinh 2-4) Bam vao nut Run Sau d6 ban sé thay néi dung thé hién sau khi thuc hién macro & Sheet2 giéng nhu tai Sheet. Ban sé thay céng viéc thue hién trong macro la rat nhanh va chinh xac. Voi cac cong viée phirc tap va xt? ly on hon, thoi gian 8 thi hanh mt macro cé thé vai giay tham chi én dén hang phut. > WN Shoots \ sheet2 ( sheots / Hinh 2-4: Thyc hign macro tir cia sé Macro tai Sheet2 24 2.3- Thuc hién macro khi st dung phim tat (shortcut key) Thu tuc Address_Ref c6 thé duc diéu khién trong bang diéu khién Macro (muc 2.2). Luc truéc phim tat da dugc gan dé thue hién céng viée 46, hay sl dung phuong phap thay thé nay: 1. Tai Sheet2 ban b4m 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 dudi 6 dé. 3. Ban hay thir thy hién lai macro d6 bang phim tat tai cdc vi tri khae trong Sheet2 2.4- Tam divng the hién va thoat khéi macro Trong qué trinh thi hanh macro, néu muén tam ding hay héy qué trinh thyc hién macro true khi két thie, ban 4n vao nut ESC trén ban phim. Dé thye hién cong viéc nay thi thoi gian thyrc hién macro phai di dai. Vi du, tha tuc Address_abs khi thi hanh thi khéng thé kip dng lai vi thoi gian din ra rt nhanh. Bé kip “bat”, ban bé sung thém vong lap For... Next dé kéo dai thoi gian thy hién (xem cach bé sung ma Iénh vao trong macro trong muc 4.4) Két qua nhw hinh 2-5 6 dudi day: wy) Addvess, ActiveCe ll. FormulaRiC: Range ("54") .Select Activece 11. Fo: |: Range ("D3") .Select Hinh 2-5: Tam difng khi thy hign thi tuc 25 Civa sé Microsoft Visual Basic hién ra thong bao rang thi tye dang thuc hign da bi ngat (Code excecution has been interrupted). Ban o6 cac truong hop wa chon nhu sau: - Continue: tht tuc tiép tuc chay binh thuong. - End: thu tuc ding tai day. ~ Debug: g6’r6i trong thi tuc (xem chi tiét trong Chuong 16). Tuy truéng hop cu thé ma ban chon mat trong cac trvong hop trén Trong mét sé trong hop st? dung vong 1d u khéng can than thd tue sé khéng bao gid két thuic. Vi du nhw th tuc dui day: "Tha tuc lam viéc tét Sub Chuan () Dim i As Integer ie Do Range("Al") .Value = i Msgbox Range ("Al") .Value asied Loop Until i > 10 End Sub Thd tuc trén 6 sty dyng vong lap Do ... Loop tang dan bién i ttr 1 dén 10 va thoat khdi vong lap do thoa man diéu kién i > 10, thu: tuc két thic. Nhu vay th tuc lam viéc tét. Con thu tuc dui day: 'Tha tyc nay bi 14i, khéng bao gid két thuc Sub Loi() Dim i As Integer ee Do Range("Al") .Value = i Msgbox Range("Al") .Value Loop Until i > 10 End Sub Thu tuc 6 trén do quén khai bao dong Iénh i =i + 1, do dé gid tri i van bang 1 va diéu kién i> 10 khéng bao gid dug thod man, vong lp khong bao gid két thc. Tw dé dan dén tinh trang “treo may". Phim ESC lic dé v6 tac dung, ban phai bam Ctrl+Break dé co thé thoat khdi tinh trang “treo may” nhw hinh 2-5. 26 Chuong 3 CACH THUC HIEN MOT MACRO BON GAN Ban da biét cach thue hién macro ti phim tat. Ngoai ra, con mot sé phuong t thirc khac cé thé thu hién macro, ban cd thé thwe hién macro tl cac diéu khién sau: - Déi twong trong worksheet hoac biéu dé. - Nut Iénh (Button) trong thanh c6ng cu (Toolbar) - Thanh menu ctia Excel. 3.1- Thyc hién macro tir mét adi twong trong worksheet C6 nhiéu déi twong trén worksheet c6 thé diéu khién macro, vi dy nhu déi teng dd hoa trong worksheet. Cac bude thy hién nhu sau: 4, Chon Sheet3 hay bat ctr sheet nao cn tréng. 2, Vao menu View/Toolbars chon Drawing (trv truéng hop thanh cong cu Toolbar da cé trén man hinh) 3. Chon déi tueng 48 hoa nhu hinh Oval va vé hinh oval dé 4. G6 chi? vao hinh Oval dé bang cach bam phai chudt, rdi chon Add Text ttr thyc don tat (hinh 3-1). 5. Gé ndi dung Address rdi bam ra ngoai dé thoat, 6. Ban c6 thé thay di kich thuéc hinh Oval cho phi hop dé thé hien dy dt: ndi dung ché & bén trong, ngoai ra cdn phai dam bao tinh my thuat va tién dung khi str dung 7. An phai chust vao hinh Oval d6, chen Assign Macro dé gan thii tue 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 thue hién chay thty macro: 14. Chon 1 6 nao dé (vi dy nhw 6 J13). 2. Bam vao hinh Oval trén, macro sé thyc hién. ar doi tung dé hoa (cé gan diéu khian macro) ra khéi ché khac trong worksheet, sty dung phai chudt dé di chuyén (b6i vi bam trai chudt thi macro sé thy hién). Cén néu ban muén thay di macro khac thi ban bam phai chudt trén doi twong, chon Assign Macro va lwa chon macro nao ban muén Nhteng déi tung trong Drawing cé chiva tht tuc (macro) khi di chuyén Chuot t6i sé 06 hinh ban tay, dé la dau hiéu dé phan biét voi dai tong khong chiva thi tuc, Format autoshape, Eeypertin. Wty n\ sheet { Sheet sheets / chestd / Ready Hinh 3-1; Gan macro vao hinh Oval 3.2- Thc hién macro tir nut 'énh trong thanh céng cu Ngoai cach 6 trén, ban cé thé thc hién macro tiy nut lénh (button) trong cac thanh céng cu ty tao (Custom Toolbar). Vi dy, ban c6 thé gan viéc diéu khién macro Address_abs vao nuit hinh mat cudi (Smiley Face) nhu sau: 1. Di chuyén chuét dén mét diém nao 46 trong cc thanh Toolbar. 2. An phai chu6t, trong thyc don tat chon Customize. 3. Trong bang Customize, chon tab Toolbars (hinh 3-2). 28 4. Chon nut New. 5. Sau do bang New Toolbar xuat hién, ban gé tén vao (vi dy Macro1) rdi OK 6. Trong bang Customize, chon tab Commands (hinh 3-3) 7. Trong hép Categories, chon AutoShapes 8. Trong Commands, cudn xudng cho: dén khi ban chon dugc 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 c6 thé chon thém cac biéu tong khac néu can 10. Bam phai chudt vao nut Smiley Face, thuc don tat sé hién ra. Ban c6 thé stva hay xoa hinh dé va thay bang cdc hinh khac. Xem them mét sd chtre nang clia thyc don tat tai muc 3.3 & duoi day. 11. Chon Assign Macro trong thyc don tat, chon macro Address_abs va bam OK. 12. Dong bang Customize. Toolbars Commands — Options ("3.0 Settings Borders Chart Chatt Menu Bar Circular Reference Pi compare Side by Side Central Toolbox [__j Diagram # Drawing L lv i f 29 en : culmea _ Toolbars | To add a command to a toolbar: select a category and drag the | commend aut of this dialog box to a toolbar. Categories: “Window and Help Drawin | Teen Saeeees [Folded Commer Charti o @s “Forms ae control Teobox © dont Maceos "to" Symbol Built-in Menus | “New Menu scene Toobars Commands Options To.add a command ta» toolbar: select a category and drag the command out of this dslog box to « toobar. f Cowra i eget Button Image : “Edt Button Imsge... 1 Change futon Image» fF Vandow and Help r : Drawing wi Defer Style i | Text Only (Always) Test Only (Mens) : “image and Text i Hinh 3-4: Tao cdc nét Iénh trong thanh Macroi va gan Assign Macro 30 Ghi chi tao ra. Thanh céng cy dé van tén tai trong Excel cho dit ban da déng workbook tao ra né. Khi ban bam vao nut chtva thi tuc thi workbook tao ra nd sé duge mé ra déng thoi thi hanh cdc Iénh dugc gan cho nuit do. hanh céng cy ty tao thudc so hivu cia workbook ma né duge Ban hay thir stv dung nut lénh vira tao ra dé thye hién céng viée sau: 1. Truc khi thy hién thu tuc, ban xod sach ndi dung cla Sheet2. 2. Bam chudt vao nut Smiley Face trong thanh céng cu Macrot Két qua sé thé hién trén Sheet2. 3.3- Thuc hién macro tiv thanh menu Tw thanh menu ctia Excel ban co thé tao ra cdc menu moi ma khi lwa chon ching thi macro sé thy hién. Vi dy nhu tao menu mdi cé tén Macro2 nam ngay sat menu Help, menu Macro2 cé chtra menu con Work Address, cach thre hién nhw sau: . Truc khi thyrc hién, ban phai chdc chan rang Workbook chta macro cla ban dang dugc kich hoat (néu khéng ban phai m@ ra). Nn Thém mét worksheet moi bang cach vao menu Insert/Worksheet (dat la Sheet4). 3. Trong menu Tools/Customize, chon tab Commands trong bang Cus- tomize. & . Cugn xudng dng cudi cling va chon New Menu trong Categories (hinh 3-5) a Git trai chu6t & New Menu trong Commands va kéo vao dong menu canh Help. a Bam phai chuét vao New Menu trong thanh menu clia Excel, thyc don tat hién ra. ee 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 cdn thém cac 34 menu con (menu item), khéng can gan tht tuc vi menu me chi mang tinh quan ly. oe eee PaaS ee Tectue Cenmseds opnene To oo conmundto oto see cate andthe conmsd ie ths dab bso tosh Categene: Commands Window die Non Hara » pee sie ented Toto BAe aan {esa Sabet = Sigeevoos ens wc) WN Shoats {Grete ( Sreee | sheet 7 tent net Hinh 3-5: Tao New Menu trong thanh menu cua Excel ene el ponte bee es mr fps oon wee ef Ms ee Tacks ownards — Qplene Toads cnet aera st ctegy sett eda to stock Sees Connie eden dip tne | ‘rnin : i pecan Shoo | we Conte Toto i ely Zea] (eorres Gnwanis | 7 Pt : > nA shemtt ¢ Shiota { shoot Reo Ce sesnennuinanatmumnctnasoenuiseaineeinnintnteiinmstnhom Hinh 3-6: Tao menu Maro2 trong thanh menu cia Excel 32 Ky ty & tree M sé gach chan chi M trong menu Macro? (tro thanh Macro2), do chinh la phim tat dé thi hanh Macro2 (chi can bam Alt+M). Tén menu c6 thé 6 dau (thé hién dug tiéng Viet) va khodng tréng, digu dé khong cé duge @ tén macro hay ham ty lap. Tiép theo ta tién hanh tao menu con trong Macro2 : | : 3 bata e tom Menu Bn | a ‘Wind at te Cotontenu | ; Donna 2 Catan ten i a AutoShapes inn : Gate e wa 7 ‘Forms b3 tel Teron i) cl | A 12 43 hag 715 COV WA Sheet / Seat { Sheet \ sheets / 2 & Hinh 3-7: Tao cdc menu con - Trong Categories (trong trvéng hyp bang Customize van dang mé), chon Macros. 2. Tai Commands, chon Custom Menu Item (hinh 3-7), gitr trai va keo chudt dén phan tréng 6 du6i Macro2 (ving duge khoanh mau dd) . Bam phai chudt vao Custom Menu Item trong menu me Macro2. 3. 4. Tai thye don tat, déi tén trong Name thanh &Work Address (hinh 3-8). a Sau dé vao Assign Macro dé chon macro thyre hién. o Cudi cling la déng bang Customize. 33 abla cacrentveatict: | cane ossipettscre Somes Hinh 3-8: Béi tén menu con, gan Assign Macro va menu duc tao ra. Twong ty nhu véi nut lénh trong thanh cong cu ty tao, menu mdi tao duoc lwu git trong Workbook dé va lu6n hién hiu trén ctra s6 Excel, ké ca truong hop ban da dong Workbook do. Khi ban bam vao menu thi Workbook cha menu do tu déng mé ra va thuc hién lénh. Commands Options | tame: 8C.stom Button t ' Toor To. aconmardtostoxbar: sca categry anid rag the coms * cake ths data boxto otoobs. “> copy Buten Image Paste Button image a of reset outen tage on x tourer image, } von 4 aie But tage peat / a orton : Om ansteb 1 Tet only (Abvaye) i 7 ey se] Testonyy Mere) nt 4 tmage and Text yo | bgnagan © assem eyperiric Assign tro. Hinh 3-9: Tao mdi va thay déi trong menu con Ra Hinh 3-40: Stra chifa hinh ciia menu con Bang cach tién hanh tong tu’, ban cé thé tao thém duoc cdc menu con khdc. Ngoai viée gan tén (Name) va thd tye (Assign Macro), ban con cé nhiing Ia chon khac nhu’ sau: - Reset: Trd lai cai dat géc (hinh £4] cung voi tan Custom Button). - Delete: Xod menu con. - Copy Button Image: Sao chép biéu twong ctia menu con. - Paste Button Image: Dan biéu tugng ctia menu con. - Reset Button Image: Cai dat lai hinh cua menu con ( [=] ). - Edit Button Image: Sta hinh cia menu con theo y muén (hinh 3-10). - Change Button Image: Béi hinh ctia menu con (hinh 3-9). - Default Style: Kiéu mac dinh cia menu con, gdm cé hinh va cht - Text Only: Chi cd chi trong menu con (khéng cé hinh). 3.4- Thay déi lwa chon trong macro Néu ban muén thay déi cdc Iyva chon chi tiét trong macro, bus dau tién ban vao menu Tools/Macro va chon Macros (hoac phim tat Alt+F8). Ctra sé Marco hién ra nhu hinh 3-14 vdi danh sach toan bO macro 35 tise nse aco nae Aaess obs Shortcut hey cts | escrito: taser sckkess stating els Hinh 3-11: Cita s6 Macro va Macro Op! Maosin; Tie Workbook Enter arose tating nce 69 Sau d6 chon tén macro ma ban muén thay ddi, cé mot sé Iva chon sau: - Options: khi ban chon Options thi ctra sé Marco Options hign ra nhu hinh 3-11. Ban co thé thay déi phim tat va mé ta lai cong viéc macro trong Description. - Edit: khi chon muc nay civa sé Microsoft Visual Basic (MVB) hién ra va tré 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 khéng thi macro sé khdéng chay dug. b - Delete: xoa macro nao ban muén. Trude khi xoa thi Excel sé héi ban cé chac chan xda hay khéng? - Macros in: hién danh sach cdc macro tuy thuéc vao cac truong hop chon trong hép cudn tha xuéng. + All Open Workbooks: ton b6 workbook dang mé + This Workbook: chi trong workbook hién hanh. + Tén tung workbook dang dug mé trong Excel Ngay phia duoi muc Macros in la Description (mau xanh) mé ta sy hoat d6ng cla tlyng macro trong dong phia dudi 36 Chuong 4 CUA SO VISUAL BASIC EDITOR (VBE) Khi ban tién hanh ghi macro dau tién, Excelsé tao ra module trong workbook do. Module duoc quan ly trong ctra sé Microsoft Visual Basic cla Excel Trong module d6 chiva cc ma lénh (code) dug vit bang ngén ngt VBA dé xay dung nén cdc macro. Cac buée 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 s6 Visual Basic Editor hay Microsoft Visual Basic (viét tat la VBE hay MVB) hién ra nhw hinh 4-1. Ctra sé VBE chinh la noi thy hién cac céng viéc trong dy an VBA cla ban. Ban cé thé thay ré duge néi dung ting tht tuc hay ham khi cudn xudng. Hai chuong trinh con ma ban viva tao bang chtrc nang Record New Macro dug hién thi chi tiét trong ctva 6 VBE. Ngoai ra, civa sé VBE con la méi trudng dé ban xay dung mét chic ‘nding digu 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 Ctra sé VBE Ia noi quan ly, lwu trir ton bé cac thi tuc (macro) fing nhu cae dy an xay dyng trong VBA. Cau tric ctva sé VBE nhu sav: = Dong trén cling gém 6 biéu tong el va tén ota sé Visual Basic Editor, tiép do la tén ota Workbook, cudi cling la dy an ban dang thuc hién. - Dong ther hai la cdc menu diéu khién chtva trong thanh menu ctia VBA. - Dong thir ba la thanh céng cu tiéu chudn (Standard) duge mac dinh xuat hién trong civa s6 VBE (hinh 4-1). Ngoai ra, con mat sé thanh céng cu khac khéng duoc hién thi san nhu Debug, Edit va UserForm (hinh 4-3). Tuy trwéng hop cu thé ma ban co thé cho hién thi va str dung céng cu nay. Géc phia trén bén trai la chi tiét dy dn cia ban (Project Explorer). Dy an bao gém tap hyp cac déi trong Excel Objects (gdm cdc déi tong trong Excel nhu: Sheet, This Workbook), Forms (chtva céc hop déi thoai iuy bién do ngui str dung lap ra), Modules (chtra cac module con nhu Module1, Module?....). Module !4 noi quan ly, lwu tri? cac tht tuc (sub) va ham (function) Méi module cé thé chtra mét hay nhiéu Sub hodc Function. 37 8 Géc phia du¢i bén trai la civa sé thudc tinh (Properties window) ctia déi tuong dang duoc chon. Gém c6 tén clia déi tong, phia dui la thudc tinh cla n6. di tugng cé thé ld This Workbook, cac Sheet, UserForm hay Module, Class Module... F £ 2 vansopet aes ma noureensaie he — fname] ‘ S mematcracapafbret| © tae aiirsee ceaessce #4 00 i HB) sheets (Sheets) Range 1H) shee? (Shewt2) ActiveCell.FormilakICL = "Nguyen Van ¥ BH) sheets (Shows) Range ("81") .Select ©) TeWielbook ActiveCell.FormulaRici = "Lop DCCT-DET Kas" C4 Fomms Renge ("BS") .Seiece Bl UserFermt Avtivecell.FormulaRici * "yong DH Me Dia chat” #5 Medes Benge ("83:55") .Selece Seen ; Selection.Font.Bold = _ a : Selection. Font . Te GT Range ("B65") .Select Anette = ooo —r—i‘C « “ees see 2s F = = 3 e ¢ 2 $8 & PT | “e & € S&S 8B & | = ae a 38 i | - £ g & @ = g & & 2 € So S 2 : 5 Hinh 4-2: Cac nut lénh trong cong cy tiéu chudin cuia cifa sé VBE 38 UserForm Customize... Hinh 4-3: Cac thanh céng cu Debug, Edit va UserForm trong VBE Phan chiém dién tich lon nhat civa sé MVB chinh la civa s6 code (Code window). Dé Ia noi soan thao ma lénh (code) trong macro hay xay dung User- Form. Tai d6, ndi dung thé tuc, ham sé duoc hién thi trong module hoc trong tung déi twong trong Excel. C6 thé coi module la noi quan ly, lwu triv cac thd tuc (Sub) va ham (Function). Méi module cé thé chtra mot hay nhiéu thd tuc hoac ham. Phia trén cira sé soan code c6 Hép déi tuong va Hop thd tue, su kién. VAn dé nay duoc dé cap cu thé hon trong muc 4-2 Ctra sé nam dudi cling co tén la Immediate, théng thudng khéng hién thi trén VBE. Trong clra s6 VBE, ban vao chon menu View/ Immediate Window (phim tat Ctr+G), Civa sé Immediate hién ra (hinh 4-7, hinh 4-8). Thong thudng, ctva sé Immediate nam phia dudi man hinh va ban 6 thé di chuyén, thay déi kich thuéc theo y muén trong VBE. Van dé nay duge dé cap & myc 4.3. Ghi chu: Néu chi stv dung thuat ngi macro d6i voi cdc churong trinh ni chung thi nhiéu trvong hop sé khéng r6 nghia. Theo ding sw lam viéc thi macro phai la thti tuc vi chi thti tuc moi co thé dé chay duoc (Run Macro) va c6 thé can thiép dén nhiéu déi trong, con ham ty lap (Function) thi chi lam viéc trong mét 6 chira tén ham. Chinh vi vay, chung ta str dung thii tuc (Sub) va ham ty lap (hay Function) dé thay thuat ngt macro ndi chung. 4.2- Cla s6 soan thao code (Code window) Mot thd tuc duoc bat dau voi Sub va két thc boi End Sub. Ham tu lap cting bat dau bang Font va két thc béi End Function. Cac thi tuc hodc ham ty lap néu dug lap ra dé co thé dling 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 cla sé VBE. Module dling chung c6 Hép déi tong voi tén la General, danh sch thi tuc trong méi module dug liét ké trong Hop thii tue, sw kién (hinh 4-1). Ngoai ra, ban cén 6 thé x4y dung thi tue cho déi tuong la Workbook, ThisWorkbook voi nhiing su kién xay ra déi vi nd. Ba biét chi tiét, moi ban xem phan lap trinh sv kién trong Excel tai Chuong 18. TheeeNunbers (] |/ Dam num a9 Integer, num? 22 Integer, mums az Inveger hum = 10; num2 = 20: nud = 30 [binge | YogBox "Gia cri trung Binh la" ¢ ~ a Nyaverage (muml, num2, nuns) MegBox Mmul= " € mut € Che (19) € wnuma= " & mum 6 Chr (13) 6 "nune= 7 § mes € Che (13) End Sab notion MyAverage(numt, By pumt = nuel #4 Hyaverage = (numl + numz + rues) / 3 End Fun ADeclarations} Y [iPectarations) 4 |Add_Forn IHienthong Type Thongtin Ten As String | Diachi as Sune mae | in Quequan As StShowFormé | | End Type | | Tuoi As IntedshowForm? 4 | f Sub Hienthongtin() i Dim Danhsach as Thongtin i A 1 To 4 Hinh 4-5: Danh sach cac chwong trinh dude xay dung trong ting module 40 i : nisbeieammmetapelea I Private Suk Yorkbook_Open() MsgBox "Hello World!” End Sub Hinh 4-6: This tuc cia sy Sau Sub hay Function la tén cia thi tue hay ham. Ti khoa Sub, End Sub, Function va End Function mac dinh cé mau xanh da tri (hinh 4-4). Noi dung bén trong thi tuc hoac ham nhu sau: éi tugng Workbook md ra (Workbook_Open) Théng thong, ngay du6i dong Sub hode Function fa dong mau xanh ka cay voi dau ngoac don (') & dau dong, do [a 101 chu thich (comments). Loi cht: thich khong anh huéng dén macro va ban c6 thé thay di ndi dung ctia nd. Khi ban tién hanh ghi macro, tén macro va loi mé ta ndi dung st dung tw déng xuat hién dudi dang chi thich. Ngoai ra, ban c6 thé ty bd sung cha thich trong qua trinh xay dyng macro. Khi d6, ban sé dé dang hidu duoc cac buoc cling nhy muc dich thu hién cla cdc dong ma lénh. Tiép theo la ndi dung ma lénh, day chinh l& n6i dung chinh quyét dinh sw tam vige cia Sub hay Function. Ban cé thé stra déi, thém bot ni dung ma lnh cho phu hop Suéng mau den lién dai cé y nghia phan chia céc Sub (thd tuc), Function (ham) trong Module. Dau gach du@i (_) thinh thoang gap o cuéi dong ma lénh Trong truéng hop ma lénh qua dai thi ban dung (_) dé ngat dong, nhung duoc hiéu la ma enh van lién tuc. Trong muc 12-2 trinh bay chi tiét vé cach ngt dong. Ngoai ra, dau gach dui con bat gap trong cac tht tuc su kién (hinh 4-6). Khi ban ghi macro phtrc tap hon, ban c6 thé gp mot s6 mai lénh ty dong xuat hign. Excel ghi lai tat cd nhitng gi ban thy hién mot cach cu thé nhat, ké cd nhting thudc tinh dugc cai dat mac dinh trong Excel (dang st dung) nhung ban khéng hé can thigp toi. Ban co thé luo bo nhteng ma lénh tha do ma khéng anh hung dén két qua thuc hién macro (xem tai muc 4.4.2). Bé 16 hon ban thyc hién vi du sau day: 1. Tai 6 B3 ban tién hanh ghi macro, dat tén macro la Kiem_tra. a Go 86 1.2 vao 6 dé ri tién hanh dinh dang lam dam, nghiéng 86, can s6 vao gitva 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é bém nut divng ghi macro 4t om Bay gid, ban kiém tra xem macro lam viéc nhw thé nao bang cach bam phim Alt+F 11. Trong cira s6 VBE, ban mo module 6 chtva thé tuc vira duoc ghi va sé thay ndi dung nhu sau (da lvoe bét nhing ché tréng khéng can thiét): Sub Kiem_tra() \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 = xlCenter i End With Selection.Font.ColorIndex = 3 ; Range (“C3”) .Select End Sub Trong thi tuc trén, ban sé thay nhiing doan ma lénh ty nhién xuat hién (gach 6 gitra). 86 chinh la nhéng cai dat mac dinh sn trong dinh dang 6 cita Excel ma chung ta khéng hé can thiép toi. 4.3- Ctra sé Immediate Trude khi nghién ctru vé ngon ngé VBA, ban hay xay dung vin tir vung trong VBA cho ban. Lam thé nao dé ban thu hién céng viéc 46 nhanh chong va khong bj mét méi? Lam thé nao dé ban hoc duc nhiing cau lénh VBA? Civa sé Immediate sé gilip ban tra Idi cdc cau hdi trén. Tai clra sé Immediate, ban nhap vao cau Iénh VBA don gian, sau dé bam Enter, Excel sé kiém tra 42 va thc hién cau lénh dé. Néu ban muén tim hiéu thém théng tin thi ban thém dau hi (?) 6 trude thay vi g6 chit Print, két qua sé thé hién ngay & dong dui (hinh 4-8) Voi thi tuc ho&c ham, ban phai xay dyng chuong trinh theo dung quy dinh cia ng6n ngi VBA thi moi cé higu Ic. Qua trinh thy hién (thi hanh macro, tinh todn ham) dién ra lién tuc va rat nhanh, ban khong thé theo dai, kiém tra tung buc mét cach binh thudng. Cai hay cla clva sé Immediate la cho phép thuc hién ting cau lénh mét, két qua thé hién ngay trén ctra sé Excel hay ctva sd Immediate. Definition Shih+F2 [| RE vBaProjeci Last Position Ciri#shift+r2 = 93 Merosofl «= al num3 = 30 tri trung binh la " ¢ el, num2, mum3) =" § numl § Chr (13) qum2 ¢ Chr (13) © "numa Object Browser F2 40 11] 2 [ue nh Shoott \ sheet2 { shests / [Rea tra sé Immediate 43 Vi du tai hinh 4-8, tng cau !énh thu hién céng viée nhu sau: Worksheets (“Sheet2”) .Activate ‘Kich hoat Sheet2 Range (“A2”) .Select ‘Chon 6 A2 (béi den) Range ("B5") .Value= “Nganh DCCT” ‘Thé hién “Nganh DCCT” trong 6 BS Range (“B5") .Font.ColorIndex = 3 ‘Gan mau dé cho chit tai 6 B5 Range(“B5”) .Font.Bold = True ‘Gan chir dam tai 6 BS Trong qua trinh thy hién ma gap I6i, cia 86 VBE sé thong bao ngay. Vi du nhu hinh 4-9, bang tinh Sheet4 khdéng tn tai trong Modau.x1s, ctr so VBE sé bao Idi. Hinh 4-10 théng bao khi ban chon mét sheet khéng tén tai trong workbook. eactivelarkbook . Name Modau. xls 2Sheets. Count 3 ?Activesheet, Name Sheet2 | VorkSheets("Sheet4"). Select Subscript out of range Help i Hinh 4-10: Cifa s6 bao 161 4.4- Hiéu chinh trong VBE Ctra sé VBE (hinh 4-1, 4-4) co khu vy soan thao code tréng gan giéng nhu Word, ban cé thé dé dang tao nhing thay ddi trong dé nh bé sung hay b6t di ndi dung, téi vu, rut gon ma Iénh tha khong can thiét,... Cac phim mii tén trén ban phim dugc stv 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 nh trong Word Dui day la mét sd thay ddi chinh co thé thuc hién duoc: i 44 4.4.1- Thay déi tén cua thé tuc Trong trudng hop ban musén thay ddi tén cia tht: tue vi ly do nang cAp chwong trinh hay vi nhieng ly do khac, ban khéng thé thurc hign c6ng viee do trong Excel ma bat buéc phai thy hién trong civa so VBA. Vi dy, ban od thé thay dai tén macro Address_abs thanh Dia_chi chang han, chi can gé néi dung Dia_chi thay thé Address_abs trong dong Sub Address_abs(). dng thoi, ban cling stra ndi duhg ghi cht phia duéi. Ban co thé kiém tra két qua stva déi trong hop Macros Name ctia ctva sd Macro khi bam vao phim Alt+F8 tai Excel. | Sub Dia_chit) | Range ("B3") Select Range ("53") Select — ActiveCell.FormulaRICl = "Nguyen Vo ActiveCell.FormulaRici Hinh 4-11: Thay déi tén ciia thi tuc 4.4.2- Sia doi m4 lénh trong thd tuc Nhu da dé cp, chire ning ty ghi macro sé ghi lai toain b6 nhiing cai dat mac dinh trong Excel. Vi vay, mot s6 ma lénh sé khdng can thiét va nén xoa bd. Ching ta rit ngan thi tue Kiem_tra lai baing cdch xod bé nhting ma lénh tha (duge gach 6 gitra), cach thyc hién giéng nhu & trong Word. Két qua nhu thu tuc dudi day: Sub Kiem_tral() ‘Kiem_tra Macro ‘Macro recorded 12/31/2006 by PhanTuHuong Range (“B3”) .Select: ActiveCell.FormulaR1Cl = “1.2” Range (“B3”) .Select. Selection.Font.Bold = True Selection.Font.Italic = True With Selection HorizontalAlignment = x1lCenter End With Selection.Font.ColorIndex = 3 Range (“C3”) .Select End Sub 45 Ban hay chay thi thi tuc trén, chc chan két qua van nhu luc truéc khi stva. Nhu vay, sau khi ghi macro ban nén loai bé nhing doan ma lénh khong can thiét, tranh viéc Excel thuc hién nhieng céng viéc thtva va tht tuc dai dong. Dé thue hién dug viéc loai bd nhirng mé lénh thiva thi ban: phai so sAnh gira cong viéc da thy hién tr ban phim véi néi dung ma cla macro ghi lai, tt dé tim ra sw khdc nhau gitra ching. Ngoai ra, ban phai cé nhieng hiéu biét nhat dinh vé VBA mdi c6 thé chinh stra mét cach hop ly va khéng sai sot. Chung ta lai quay tré’ vé tht tuc Address_abs duoc ghi tai muc 2.1, ndi dung thu tue nh sau: Sub Address_abs () ‘Address_abs Macro ‘Enter address starting in cell B3 Range ("B3”) .Select ActiveCell.FormulaR1Cl = “Nguyen Van Hung” Range ("B4”) .Select ActiveCell.FormulaRICl = “Lop DCCT-DKT K48” Range ("B5”) . Select ActiveCell.FormulaR1Cl = “Truong DH Mo Dia chat” Range (“B3:B5”) .Select Selection.Font.Bold = True Selection.Font.Italic = True Range ("B6”) . Select End Sub Ban da thay thi tuc Address_abs t6i wu chwa? Cau tra Idi la chua. Ban co thé rut ngan thi tuc dé 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ét 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 i a ikl Range ("B3”) .FormulaR1Cl = “Nguyen Van Hung” Range ("B4”) .FormulaR1Cl = “Lop DCCT-DKT K48” a Range (“B5”) .FormulaR1Cl = “Truong DH Mo Dia chat” I Range ("B3:B5”) .Font.Bold = True i Range (“B3:B5”) .Font.Italic = True Range ("B6”) .Select i End Sub Nhw ban thay, thu tuc da duc rat ngdn dang ké. Bay gid ching ta bé sung thém théng tin vé tudi, qué quaén cho anh “Nguyen Van Hung” nay vao cac 6 BG, B7 6 phia duoi. Két qua thii tue da bd sung nhu sau: Sub Address_abs1() i ‘Address abs] Macro i ‘Enter address starting in cell B3 : Range ("B3”) . FormulaR1C1 Nguyen Van Hung” | Range (“B4”) .FormulaR1Cl = “Lop DCCT-DKT K48” 4 Range (“B5”) .FormulaR1Cl = “Truong DH Mo Dia chat” i Range (“B6”) .FormulaR1Cl = “Tuoi: 21” 7 Range ("B7”) .FormulaR1Cl = “Que quan: huyen Gia Loc - t Hai Duong” (cing 1 déng) | Range ("B3:B7”) .Font.Bold = True 4 Range ("B3:B7”) .Font.Italic = True : Range ("B8”) .Select End Sub Bé kiém tra tht tuc trén hoat dong nhu thé nao, ban di chuyén chudt vao trong bat ctr ndi dung ném trong th tuc dé (tén thai tuc phai hién thi trong Hop thi tuc, sy kién), sau dé vao menu Run va chon Run Sub/UserForm (hoac phim tat F5) nhw hinh 4-12. anita Sau dé vao View/Excel (phim tat Alt+F11). Luc dé, clva sé MVB van hién hiru trong Excel. D8 déng ctva sé VBE va tro vé Excel, trong civa sé VBE ban vao menu File, sau dé chon Close and Return to Excel (phim tat Alt + Q). 47 | Range ("B3:B7") .Font. Italic = True | 1 6h6Um Cle _| Hinh 4-12: Thc hign tha tuc Address_abs1 trong ctfa s6 VBE khi con chudt nam trong EET | | Aiguyen Van Hung | 4 Lop OCCI-OKT Kas | {5 Trnong OH Mo Dia chat le Thi 2 | 2 bow gan: hajon Gi Lox Hai Duony | 3 | Hinh 4-13: Két qua thyc hién thd tuc Address_abs1 4.4.3- Tao thém Module trong cia s6 VBE Néu muén bé sung thém mét module, ban vao menu Insert va chon Mod ule. Ngoai ra, ban co thé bé sung UserForm (bang diéu khién) hay Class Module theo y muén. Cach xay dyng UserForm dugc dé cap trong muc 19.2 = vonvvoiec(adive © = Microsoft Excel Of Fade : UH sheet! Gheokey~ 7 Jp3") .FormulaRici = "Ng Hinh 4-14: Thém mét module mdi 48 i i Khi bam vao menu Module, mét module réng sé duo tao ra voi ten mac dinh theo thir tu Module1, Module2, Module3,... Ban c6 thé xéy dung cae ham va thi tue & bén trong Module mét cach thodi mai ‘Modules Module Alphabetic | Categorized qo) Bosung Hinh 4-15: Module3 duc tao ra va ban thay tén bang Bosung Dé dé quan ly, ban c6 thé déi tén cla module vira duoc tao bang cach chon tén module, sau do vao ctra sé thudc tinh Properties dé thay déi tén thanh Bosung (trong Name). Sau a6, ban c6 thé x4y dung cdc thi tuc hay ham trong module Bosung nay. YBAProject ( [= G8 Mice Ghi chi: Méi module cé thé cha duoc nhiéu tht tuc hoac ham. Voi nhing dy an lon, ban nén co phuong phap quan ly module mét cach cu thé, rO rang. Nén phan chia r6 rang nhom module chiva tht tuc, module chira ham va dat tén cho module do. 4.4.4- G& bé module Khi muén gé bé mét module nao dé trong dy an VBAProject, ban chon tén menu do (vi du nh Bosung). Sau dé ban bam chudt phai va thyc don tat hién ra, chon Remove Bosung... (hinh 4-16). Khi dé, clra s3 MVB hién ra hdi ban cé xuat module Bosung truéc khi g@ bo nd? Ban chon Yes dé Iwu lai truéc khi g@ bd (néu chon No thi sé khong lu lai). Module Bosung sé wu Iai voi tén *.bas. Ban cé thé mé file via duge Iwu lai dé bang VB 6.0 hoac tir Notepad 49 eae Propzeti. wert » pest a ew Brot Fama eb Rin Cumry Dayo Ioob Enis Whdow Ho Bea RAB bd | cotegsed | Pai eae ly ject Wrage eid: a cesses es = mente) A baneberabn 604) meee ees x : / Sigh Selectson.Font : id (ame) os Hane = "arse Retires th ae din code to Ps Size 732 Heatly afar, cnl or dos a Fie Edt Format View Hoip [attinute VB_Narne = “Bosurg ‘Sub Phim {019 Phirm_tat Mero Macio recorded 2728/2007 by Phan Tu Huong " Keyboard Shortcut: Cir} Range('C5") Select ActiveCellFormulaR 1C1 = “Helio Wer! Range(C5") Select Selection Font. Bold = Te Selection Font Gelosindex = Hinh 4-18: Mé module Bosung.bas tir Notepad 50 Chuong 5 LAM WEC VOI FILE EXCEL CO CHUA MACRO 5.1- Str dung chive nang Security May nam gan day, do virus macro phat trién nén Microsoft di bd sung thém ché dé an toan trong cac tng dung. Chtre nang Security diéu khién su lam viée cla macro, tire 1a c6 thé cho macro hoat dong hoac khong hoat dong. Voi che nang diéu khién dé, ban sé yén tam hon Khi sir dung Excel trong cong viée. Dudi day la cach str dung chire nang Security trong Excel 1, Vao menu Tools/Macro va chon Security (hinh 5-1), clra sé Security hién ra. 2. Trong Security, tai tab Security Level co 4 truéng hop chon nhu sau - Very High: Dat ché do an toan rat cao, cdc macro khéng thé thuc hién duoc, chi try macro ctia Office. Khi mé file c6 macro thi sé hin bang théng bao nhu hinh 5-2. Ndi dung théng bao cdc macro da bi v6 hiéu hod - High: Dat ché dé an toan cao. Chi nhiing macro duge xac nhan mdi co thé thyc hién, cac macro khac bj v6 higu héa. Hé co macro duoc xac nhan, ban phai dang ky trong menu Tools\Option\Security\More Macro\Trusted Pub- lisher. Khi ban mo file ¢6 macro thi sé théng bao cac macro da bi v6 higu hoa nhu hinh 5-3. - Medium: Dat ché 6 an toan trung binh. Khi chon truéng hop nay, néu mé file cé chtva macro thi Excel sé canh bdo nhu hinh 5-4. Ban cé thé Iva chon Enable Macros dé macro hoat déng, hoac Disable Macros dé macro khéng hoat dong. Trong trwong hgp file cla ban khéng st dung macro, néu khi mé Excel canh bao nhu hinh 5-4 thi file cia ban da bi nhiém virus macro. - Low: Khéng dat ché dé an toan, tlc la Excel khong canh bao bat ctr van a8 gicd Nhu vay, khi ban st dung VBA nén dat Security Level & mirc dé Medium hoae Low. Khi dé cde thé tuc hoac ham moi hoat dong duc. Rat nhiéu 51 trudng hop macro khéng hoat dong dug khi dé ché do Security Level & mtrc dé Very High hay High ma nguoi str dung khéng r6 nguyén nhan. C) Vory High. Cnly macros installed in trusted focathons wil be allowed Oitigh. cry signedacros rm trated suaces wi be slowedto ‘ns Uegpedimecs re sbi bk, fk @ Sedum, You can choose whether or rst to tun potently unsafe ° | asap, 4 Macros, ahs seociniin sony GEE Hinh 5-1: Vao menu Security va cifa sé Security “Macros are dsabled becauise the securty lvelis set to Very High, To run the macros, change the secutty level toa “lower setting ond vey the macros ate signed andtiusted ‘Macros are dsatled because the securty level set to High and a datally sianed Trusted Certficate tick attached to the eattos. Torun the mszros, change the secury level a lower setting (not recommended), oF ‘request the macros be signed by the author uang a certfieate issued by a Certdicate fulhoniy. Show Help >> Hinh 5-3: Thdng bao khi mé file cd chita macro d ché dé High Macros may contain virus sualy Safe to disable macros ate leatinate, you right lase soime Functionally, Hinh 5-4: Canh bao macro chifa trong file Trong Excel 2007, che loan ea co eel ee nhieu thanh phan hon va Excel Options ti nut Office Button (nut hinh tron to phia trén, bén trai chia ctra sé Excel 2007), Sau dé, chon menu Trust Center trong otva sé Excel Op- tions (hinh 5-5a), tiép tue chon muc Trust Center Settings... Tiép theo ban tuy chon nhiing cai dat trong ctva 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 mae dinh trong Excel 2007 la toan b@ macro khéng hoat déng, néu ban dinh chon myc nao thi hay bé danh dau trong hép kiém tra. Ban c6 thé cai dat chi tiét tai cdc muc khdc. Formvios | Proofing Cusomice Menage Ba Developer Macto Settings bad-tne Message Bar i ch | tio comer External Content |) Ei) Tes access te the WBA project abject model Privacy Options (a) Hinh 5-5: Menu Trust Center va cc menu chifa trong Trust Center O ché a6 cai dat mac dinh, khi ban mé file c6 chtra macro, Message Bar hién ra canh bao vé an toan. Khac voi Excel 2003, tuy cai dat khong cho macro hoat déng nhung Excel 2007 van cho phép hoat d6ng tré lai khi ban 53 vao Option trong Message Bar, sau d6 chon nut Enable this content trong clva sé Microsoft Excel Security Options (hinh 5-6). Ngoai ra, ban co thé thay 4) cdc mac dinh khac khi bam vao Open the Trus Center. VBA bo SungL icon Date Review | @ security Waring Some seve 0 “ Enaoek 4 Danh sach ‘Gidi tinh) 2 Nguyén Van An | Nam’ | 3. Tin Van Binh \4 (Nguyén Thanh Hoa | | 6 Ls Thi Hang ay @ “ Security Alert - Macros & ActiveX. Macros & Activex Macros and one oF mere yve been dsabled, This actve content might, contain viruses or other security hazards. O9 nat enable thi content unless you tust the source ofthis fle Warning: It is not possible 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. oce inforreator Fie Path: 0:\PTH\BsigangiBAIVBA_bo_ sung. xls © Help protect me & G Enable thie conte isinarnn content (recommend Hinh 5-7: Digu khién dé macro hoat dong trong ta chon Enable this content 5.2- Sw dung cae chong trinh diét virus Hién nay virus macro trong Excel phan lon co ngudn g c tt nue ngoai Nhiing virus d6 66 kh vo higu chire nang canh bao trong Excel. Vi vay, 54 viée nhan biét file Excel co bi nhiém virus khon pau tién ban vao menu Teols/Macro va chon thu myc Macros. Trong clva sd Macros ban tim xem cé thu tuc nao fa trong danh hay khéng? Néu cé thd tue nao la ma ban khéng thé siva (nut edit bi mo) hay xod duge (nut delete bj mo) thi dé co thé la virus. Ngoai ra, con mot sé virus duoc xay dung bang Macro4 trén bang tinh cling gay nhiéu phién toai. Thong thong cac bang tinh chtva virus dé dé An va dé kiém tra, ban vao menu For- mat/Sheet rai chon muc Unhide. Néu thay sheet nao co ndi dung Ia thi xoa di, dng théi ban xoa file khéi déng trong thu myc XLSTART. thi khéng phai don gian hn 2-4), Phan lon céc chuong tinh diét virus cla nue ta hién nay khéng phan biét dug virus théng thung va macro duge xay dung trong VBA. Vi dy nhu chuong trinh BKAV hoac D382, day la hai phan mém diét virus rat phé bién & trong nue va duoc phép str dung mién phi. Néu khéng can than thi cdc chuong trinh quét virus nay sé xoa bé toan bd ma ban xay dung trong VBA. Khi d6, nhérng tng dung cé st dung VBA sé khong sty dung duoc nia Dé cdc macro duge an toan khi str dung chuong trinh BKAV, cac ban Iuu y nhiing van dé sau: = Khi khdi dong chuong trinh quét virus BKAY, ctra sé BKAV hién ra nhw hinh 5-8. Khéng duoc chon muc Xoa tdi ca macro va muc Diét khong ean hoi - Trong qua trinh quét virus, BKAV sé lam tudéng cae macro ctia ban lap ra 4 mot con virus nao a6 (vi du nhu WX97Macro.New nhu hinh 5-9). Néu ban chon Yes thi toan bé macro sé bi xo. Trong truéng hop dé, ban chon No. Néu chang may bam vao Yes, ban co thé phuc hdi lai ca macro bang chive nang “Sao luu trudec khi diét" & duoi. True khi diét virus trén file, thi cac file nhiém virus sé duoc sao leu lai trong thy muc C:AProgram Files\Bkav2006\Backup (hodc duéng dan do ban cai Bkav) dé dé phong trvdng hop rui ro, Qua trinh sao Iwu sé khéng dién ra khi dung wong con tréng cita 6 cteng chia thu myc backup nay nhé hon SOMB. Sau 15 ngay, cac file sao luu nay sé ty dong bj xod di dé tiét kigm cho dung long 6 dia. Vi vay, néu chang may cdc chuong trinh trong VBAProject bi xoa thi ban phai phuc héi ngay, tranh trudng hop vwot qua thoi gian Iuru git? trong thur muc backup. Noi tém Igi, ban khong nén sir dyng cde chong trinh diét virus trén khi ban thudng xuyén str dung VBA trong céng viée, ma sir dung cac chuong 55 trinh diét virus cia nuéc ngoai nhu Symantec antiVirus hay AVG Antivirus, Cac chuong trinh nay c6 kha nang phan biét rt (6t gitva virus va macro tron¢ VBA. Néu file Excel cia ban co c virus macro va macro trong VBA thi ci chuong trinh cdc chong trinh quét virus trén sé quét sach virus macro d6 Dy an VBA cia ban van an toan Bie irene Eas Bach Khoa AntiVirus Professional ia. | UeUodste | eboeaiée | anes | Ueoddia Cronies Lia care © ThebSemasauso Flechuong inh «| _Ditthdog edn © chem Barabahdog 7 evinbla Sookie iit hn ius ta Wlebeterie & Nap i dena © Chant me restless 1 Ene eoce | 16195-2006 Nowra 14 Gung Grown Qe DK thos Bach Khoa AntiVirus Profession Tab chan Nh ag | vids Vina yi vue WASTEBEION Hinh 5-9: BKAV [am tuéng macro trong VBA la virus Chuong 6 UU, NHUDC HEM COA cHife NANG TU GHI MACRO 6.1- Wu diém cia chive nang tu ghi macro Chive nang Record Macro ghi lai nhéing gi ma VBA thy hién la cach hoc rat hay, gitip cac ban cé thé nd 6i twong va thudc tinh cilia nd, nam dug trinh ty cdc buée thy’ hién céng viée. Chir nang nay hd tro tich cure nhéng ngudi mdi bi tim hiéu vé VBA. Ban co thé ghi lai mot sé cong viée, sau d6 xem lai nhiéng ma lénh dug ghi va tim hiéu chive nang cia chting Ngoai ra, voi mdt sé céng viéc néu khéng st? dung chive nang ghi macro thi rat khé thye hién, tham chi khdng thé the hién néi. Vi du nh trvong hop tha tuc sp xép lai danh sach theo tht tu’ tang hay giam dan, Néu suv dung chtre nang Sort cia Excel bang VBA thi sé rt khd, vi co nhiéu théng tin phai xt? ly. Nhung vei chic nang ty ghi, ban cd thé dé dang tao ra thi! tuc thyre 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 truéng hop nhu xay dyng va hiéu chinh bidu dé trong Excel, ban bat bude phai st: dung che nang ty ghi macro. ascending CO deseendinn sheader ow, Hinh 6-1: Sti dung chive nang ghi macro dé sap xép lai danh sich trong “A18:C33" 57 sep Macro Macre recorded 4/23/2 Range ("AL7:C33") . select selection, sort Keyl:=Ranga("AL6"), orderl:=xlascending, _ Header:=xl6uess, Ordercustom:=1, Ma orientation Range ("D19") Gioi tinh Ban Narn Bang Nara Nam__| 27 (Khanh 28 [Minh [Sinn Thanh | [Tuan Hinh 6-3: Két qua sip xép lai theo c6t “Tan” 6.2- Nhugc diém cua chive nang ty ghi macro Ngoai nhting uu diém nhu da dé cp trong cac muc trén, chic nz ang ghi macro co nhirng han ché nhat dinh. Vi du, ban sé khéng thé lay duge néi dung hay xac dinh mau trong 1 6, khéng thé so sénh gia tri gitra cac 6, khong igo duge ham riéng,... bang chive nang ghi macro. Nhu vay, néu ban chi str dung chive nang tu ghi macro thi sé con nhiéu han ché. Duoi day la danh sAch nhiing céng viée ma chtre nang ghi macro khong thé ty thuc hién duo: - Cac kiéu vong lap (Do... Loop). - Cac kiéu hanh dong theo diéu kién (st? dung if... Then). 58 _ Khai bao kiéu gid tri cho bién - Gan gia tri cho bién. - XW ly va chuyén déi gitra céc kiéu dir liu. - Hign cdc thong bdo giao tiép voi ngudi str dung (Pop-up Messages), - Hién cdc hép thoai diéu khién (Dialog Boxes). - Tao lién két ty dng voi cdc chuong trinh khac trong moi truong Windows, . Nhu vay, bat buéc ban phai bé sung ma lénh VBA vao trong macro hay phai xay dung mot macro mang tinh dc lap dé thyre hign hing bal toan phire tap hon. Khi dé, viéc str dyng chire nang ghi macro thuan tuy tro nén khong hiru dung niva. Tuy vay, khong cé nghia la chive nang nay da mat tac dung ma nguoc Iai, né van song song hé trg tich eye cho ban trong con duong chinh phuc VBA day gian nan va vat va Trong céc chwrong dudi day, ban cé thé Kham pha duge nhiéu kién thir vé ngon ng@ lap trinh VBA. Chi ¥ hai thuat ngir VBA va VB trong mét sé trvong hop duge stv dung dung nh nhau, vi déu ¢6 thé dong tho’ sty dung trong VBA hay VB. Chung chi khac nhau 6 mdi trudng va déi tugng lam viée. Ning kién thire nay déu bé ich cho nhéing ai dang nghién etvu vé VBA hay VB. 59 Chuong 7 NGON NGO VISUAL BASIC FOR APPLICATIONS 7.1- Cac déi twong (Objects) Visual Basic hay VBA la ng6n ngit lap trinh hung déi twong (object-oriented). Diéu dé cé nghia la cac thanh phan trong Excel co thé coi la cdc déi tong dé ban diéu khién, can thidp t6i. Déi twong chinh la workbook, worksheet, 6 va khdi 6 (vung) trong worksheet, biéu dé, thanh céng cy,... ma ban sé gap trong mét sé vi du vé diéu khién trong Excel. TAt c& cdc déi tuong trong VBA dugc t6 chirc theo hé théng cdp bac. Vi du Excel chinh la déi tuong Application, day la déi tong Ion nhat. Bdi tuong Application cé chtva cac déi tuong khac nhu cc workbook hoa nhing thuc don lénh. Nhieng thay ddi xay ra trong déi tong Application anh hung dén toan bé ndi dung trong Ung dung, Béi tveng Workbook c6 thé chtra cdc déi twong worksheet hoac cac bidéu dé (Chartsheet). Con lam vige déi véi cac déi tueng giéng nhau thi sao? Néu ban mo mot workbook méi va lam viée trén cac worksheet, ban sé khéng thay duoc sy khac biét gitra cac worksheet dé. Nhom cia nhiing déi twong gidng nhau duoc goi la tp hop (collection). Vi du nur tap hop worksheets bao gém todn b6 cdc worksheet trong Workbook lién quan. Tuy cé cac diéu khién gidng nhau nhung tap hgp (collection) khac voi déi trong (object). éi tung cé thé chi la don 1é nhung tap hop thong fa sé nhidu (thém dudi s & sau). Vi du Workbooks, Worksheets 1 mdt tap hop cla cdc workbook, worksheet Dé dé hinh dung, chung ta co thé lay MOt vi dy nhu: mét chiéc xe may cia Honda, c6 thé coi !a mét déi tong. Honda o6 nh nhu' Future, Future I, Future Neo, Super Dream, Wave 100, Wave RS, Wave «, Wave a+,... Vay, ta c6 thé xem xe may cla u ching loai xe may 1g Honda la mét tap hop nhém nhw (collection), tap hop nay ¢6 cac déi trong cung nm trong mé Future (gém Future, Future il, Future Neo), Wave (Wave 100, Wave RS. Wave a, Wave u-+) Bang 7-1: M6t sé déi tueng chinh trong Excel Doi tuong Mota [Application | Chinh f& ting dung Excel, ehifa toin b9 eae d6i tong ben wong nd Workbook | ia file Excel don fe chia toan bo cae worksheet, biéu dé sheet F Worksheet _ | la sheet don ié chéa cde 6 (cell), d0i twong d6 hog trong sheel,.. Range Tao hay Khoi 0 [call ko don Ie ~ Charater Ja ky don Ié trong 6 = Hinh 7-1: Biéu dé cdc déi turgng trong Excel Muén diéu khién déi tugng Range, ban phai tao tham chiéu dén no. Dé cé tham chiéu dén duge déi twong Range, bat dau tw vi tri dau tién cla biéu d6 va thuc hién theo cdc dong phia dui. Dau chém Ia ky tu duong dan toi cp di tong khac. Véi cach do, khi tham chiéu dén déi twgng Range, ban sé tao tham chiéu theo thtr ty nhu sau: 64 Application. Workbook.Worksheet.Range Théng thong cac déi tweng ma ban st? dung du nam trong déi tong Application nén cé thé bé qua déi tugng Application (vi du cau lénh & trén co thé rat ngan thanh Workbook. Worksheet.Range). Vi du vé cdc déi tueng va tap hop nhu sau: Application. Workbooks tham chiéu dén tat ca 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 thung chtva cdc worksheet, trong méi worksheet dé chiva nhiéu 6 (cell). Ban cé thé tham chiéu dén 6 B3 nhu sau Workbooks(“Baigiang.xIs”).Worksheets(“Shect1”).Range(“B3") Sheets la tap hop cac déi twgng Worksheet va Chart (biéu dd) trong ActiveWorkbook. Sheets(“Year2006”) sé tham chiéu dén déi tuong sheet cd tén la Year2006. Charts(1) sé tham chiéu dén déi tong Chart theo thtr ty tab (1 la dau tién). Workbook dugc kich hoat thi dug goi la ActiveWorkbook (con goi la hién hanh), worksheet nao dang dug kich hoat thi dugc goi la ActiveWorksheet Néu co vai worksheet dang cling hién thi trén man hinh, worksheet nao dang c6 chudt & trong né thi dugc kich hoat. Néu ctra sé Excel co vai workbook dang hién thi, workbook nao dang chtra worksheet dug kich hoat thi duoc ggi la AvtiveWorkbook. Néu ban khéng muén thu’c hién riéng trén workbook hay worksheet nao, VBA sé thy hién trén ActiveWorkbook hay ActiveWork- sheet (mac dinh). Con néu thyc hién trén déi tung nao dé theo y mudn, cé dong dan cu thé nhu 6 trén. Theo théng ké, Microsoft Excel e6 hon 100 déi tong. Bang dui day la nhGing déi tugng co ban trong Microsoft Excel theo sy phan cp ti lon dén bé. Mdi déi tong c6 doi séng riéng cla nd. N6 cé nhiing dac diém ma ta goi la thudc tinh (properties) va nh&ng chtre nang riéng biét ma ta goi la phuong thie (methods). Cac déi tong chinh trong Excel sé dug dé cAp riéng tai Chuong 8. 7.2- Cac phwong thtre (Methods) Phuong thtrc la mot dang chuong trinh gan lién voi déi g thy ign mot hay nhiéu hanh dong. Phuong thtre khong tra vé gid tri nhu 62 tnudc tinh. Ban khéng thé gan gid tri cho phuong thre nhung cé thé truyén cac gia iri (tham s6). Méi diéu khién cé nhieng phuong thie khdc nhau, nhung van cé phuong thire rat théng dung cho hau hét cdc didu khién, Ngoai ra, phuong thc cé nhiing tham sé Iva chon riéng dé chi dinh hanh dong nhu the Cac phuong thire cé thé dug coi la déng tir. Néu phuong thtrc khéng co tham sé thi ct phap nhu 6 dudi day: Object .Method Con néu phuong thtrc c6 cac tham sé thi cd phap nhu sau: Object .Method (argumentl1, argument2,..., argumentN) di twong Range cé rt nhiéu phuong thtrc, du6i day la mot sé phuong the chinh thong siv dung - Phuong thie Select Phuong thtre Select dling dé chon mdt khoang nhiéu 6 (giéng nhu the hién b6i den trong Excel). Vi dy sau day chon vung "A1:A12" cla worksheet dang hoat déng (active) Range ("Al:A12") Select Cho y rang true khi chon mét ving thudc worksheet nao dé thi phai am worksheet dé dug kich hoat true. Néu khéng, dong lénh trén sé chon mat vung trong worksheet nao dé dang kich hoat ngoai y mudn, hoac c6 161 xay ra néu VBA khong xac dinh déi tweng chon. Vi dy dé chon ving "A1:A12" trong Sheet1 thuéc Bosung. xls, ban thyrc hién cdc déng lénh sau: Workbooks ("Bosung.xls") Activate 'Kich hoat workbook Bosung. xls Sheets ("Sheet1") .Activate ‘Kich hoat sheet Sheet] Range ("Al:A12") Select ‘Chon ving AL:A12 Tai dong lénh tht 2, cé thé thay phuong thir Activate bang phuong thtrc Select. Phuong thtre Select khng thyc hién duge voi déi tugng workbook. Ngoaii ra c6 thé chon duge nhiéu ving cung mét Ide bang phuong thtvc Select. Vi dy nhu’ dé chon ving "C2:D5" va "G10:K20", ban st dung doan ma sau: Range ("C2:D5, G10:K20") .Select 63 ~ Phwong thirc Copy va Paste Ban cé thé sao chép hay dan trong VBA bang cach dling phwong thtrc Copy hay Paste. Phuong thirc Copy dug ap dung cho déi tong Range nhung phuong thc Paste thi ding cho déi tong Worksheet. Vi dy dui 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 du trén dug ghi lai khi thao tac boi cht’c nang Recorder Macro. fan c6 thé viét ngan lai nh sau: Sub CopyRange () Range (“A1:A12”) .Copy Range (“C1”) End Sub Ban cé thé tim hiéu sau hon vé hai phuong thtrc nay trong phan Help. - Phuong thtre Clear Phuong thtrc Clear x6a ton néi dung, dinh dang, ghi chu (comment) trong mét vung xac dinh, tra vé mac dinh ban dau. Vi du ban muén xéa ndi dung va dinh dang cia c6t D & worksheet hién hanh thi ding Columns (“D:D”) .Clear Ngoai ra, ban o6 thé Iya chon cac phyong thive chi tiét hon - ClearContents: chi x6a noi dung vung Iva chon ~ ClearFormats: x6a dinh dang vung Iya chon. - ClearComments: xoa ghi cht trong 6. - Phwong thtrc Delete Phuong thuc Delete dling dé xoa toan b6 déi tyong duge chon. Khac phuong thuc Clear chi xoa néi dung va dinh dang nhung van git? nguyén vung lua chon, con phuong thirc Delete lam bién mat han ving lua chon dé 64 va Excel sé tyr dng dua cac 6 nam bén dui khoang nay Ién (hay tty bén phai sang bén trai) dién day vao khodng vira bi x6a. Rows ("6:6") .Delete Khi xda mat khodng cht khdng phai IA xéa han mét hang hay mt cdt, Excel can biét ban muén di chuyén cdc 6 con lai vao dién day cdc 6 viva bi xéa theo hinh thie nao. Vi du sau khi x6a 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 s6 cho phuong thtvc nay. Ban cé thé tim ra cdc hang s6 khac bang cach ghi lai theo tac ban thye hién. Vi du: - xIDown: Hang sé 4é chuyén xudng dudi. - xIToLeft: Hang $6 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, co mét sé hang sé ma ban khéng thé stv dung duge trong diéu kién cu thé. Nhu 6 vi dy trén, néu thay x!ToLeft bang xIToRight thi khong duge vi khong thé di chuyén 6 theo kiéu nay. Con déi voi phwong thir cé tham sé nhu GoTo thi cd phap nhu sau Object.GoTo (Reference, Scroll) Phuong thirc GoTo gitp ban nhanh chéng chon cac khdi 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é duc cuén (ving chon sé nam & phia trén bén trai ctva s6), con néu dat la False thi man hinh sé khéng duoc cudn (ving chon sé nam & phia duoi bén phai ctva 84). Vi dy ban stv dung VBA dé chon 6 P100 trong Sheett va cuén man hinh nhw sau: Application.Goto Reference: =Worksheets(“Sheet1”) .Range(“P100"), Seroll:=True (cing 1 déng) Déi tung Workbook cé phuong thie c6 tén ld Close. Ban co thé dong cac workbook khi str dung phuong thtre nay. Néu cé su’ thay déi trong cac work- book d6, Excel sé hién thi thong bao vé viéc cé Iu nhing thay déi hay khong? Ban cé thé str dung phuong thre Close véi tham sé SaveChanges dat thanh False (mac dinh la True) dé dong workbook 6 va bé qua nhéing thay ddi trong nd, vi du nhu & dui day: 65 Workbooks (“Chapter01.xls”) .Close SaveChanges :=False 7.3- Cac thuéc tinh (Properties) Méi déi tong déu cé cdc dac diém riéng va dug goi la thudc tinh (hay ac tinh). Thudc tinh tr vé gia tri dugc thiét lap séin trong Excel hoac do ta khai bao. Thong thuong thuéc tinh digu khién hinh dng va vi tri xuat hién olla déi turging bang cach gan gia tri cho thuge tinh. Vi du nhu' dong chér trong mot 6 c6 thd duge canh [8 trai, phai, trén, du6i, 6 mau nén, dudng vien chinh Ia cac thuéc tinh cia déi trong Cell. Déi vdi déi tugng Range, mot so thudc tinh dac trung nhu Font, Formula, Text, Value, Name, Row, Column, ColumnWidth. Cac gid tri thudc tinh cla déi tung cé thé due dat theo y muén nhung chi cé mét gid tr riéng trong mét thoi diém. Vi dy nh workbook dang kich hoat khdng thé c6 hai tén tai mot thoi diém Thudc tinh cé thé dug coi nhu’ la tinh td va du9c thiét lap sir dung trong cau lénh nhu sau Object.Property = Value hay Noun Adjective = Value Vi du vé gan gia tri cho 6 dang duoc kich hoat: ActiveCell.FormulaR1Cl = “Nguyen Van Hung” Range("C3").ColumnWidth = 14 sé thiét Ip chiéu rong cua c6t cheva 6 C3 rng 14. Excel mac dinh chidu rng clia cot la 8,43 diém (point) Phan kho nhat a tim hidu duc su kién nam ngoai thudc tinh cua cac déi twong. Vi du nhw v6i déi tugng Range, ban cé thé thay font chi etia 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 chit khac nhau (10, 12, 14,...) va cdc kiéu thudc tinh khac nhau (Bold, Italic, Un- derline,...). D6 chinh la nhding thudc tinh eta Font. Néu Font 6 cae thudc tinh, Font cling dug coi la déi tuong Range ("B4”) Select Chon 6 B4 dé lam viée Selection.Font.Name = “Times New Roman” ‘pat Font cho 6 B4 Selection.Font.Bold = True ‘Cho chi dam Selection.Font.Size = 10 ‘Cho cd cha 1a 10 Chiing ta sé tim hiéu chi tiét hon vé mdt sé thudc tinh hdu ich cla déi tuong Range trong muc 8.5.1 va 8.5.12 Chuong 8 MOT SO B01 TUONG CO BAN TRONS EXCEL Nhu Chuong 7 da dé cap, Excel chiva nhiéu déi tong 6 bén trong. Mai déi tvong cé tén, thuéc tinh va phuong thie thuc hién khdo nhau, Cac ai tuong cd suv quan ly theo dang phan cp, ttre la déi tuong lon chtra cac déi twong bé, d6i twong bé chiva cdc déi tong bé hon,... Ban 6 thé str dung VBA dé truy cap dén tiyng déi tong, thay ddi thudc tinh cling nhw diéu khién chéng bang phuong thie. Cac déi tuong phd bién thudng gap la Application, Window (Windows),’ Workbook (Workbooks), Worksheet (Worksheets), Range va Cell. Day la nhiing déi tvong thudng xuyén duge stv dung duoc dé cp riéng & chong nay. Trong qua trinh thy hién, ban co thé cd duoc sy tro’ gidp truc tiép khi bam phim F1 tai clra sé VBE hoac trong Microsoft Visual Basic Help 8.1. Bdi tuong Application Nhu da gidi thiéu trong Chuong 7, cac déi tuong dug té chic theo cau tric dac biét, duc goi Ia déi twgng va lap hop. Déi tuong i6n nhat chinh la lng dung Microsoft Excel (the Excel Application), goi tat la Application. Béi tugng Application la dai dién cho toan bé wng dung cia Excel va la mdi trvdng lap trinh VBA. Dé diéu khién déi tong Application, ban co thé thi hanh nhiéu thao tac. Viéc tac d6ng lén déi tugng Application sé anh huéng tye tiép dén toan b6 déi tyeng & bén trong Vi du nhu, Excel cho phép lu nhing cai dat ctia man hinh bang cach sw dung Save Workspace tty menu File. Thao tac Iyu gil? ving lam viée (workspace) cé thé thyc hién dé dang voi VBA: Application.SaveWorkspace “Bai tap” Doan ma lénh trén sé Ivu gid nhieng cai dat cla man hinh trong ving 1g file twong ty thi don gian nhat la mé file “Bai tap”, Excel sé dua [én nhing file hiu chinh va phuc hdi ctra sé cita ban dang lién két lam viéc voi tén la “Bai tap". Sau do ban can lam viée voi nh 67 Bang 8-1: Xdc dinh mét s6 théng sé cua ung dung (Application) Cau lénh trong Immedi ate “Thue hien 7Application.Name Xde dinh ten cla ing dung dang Kich hoat Application.Caption = "Phan mem” di tiéu dé eta mg dung cel thanh "Phan mem". Application Caption = "Microsoft Excel” Application. OperatingSystem Hien ra he diéu hanh dang sir dung ?Application.Path Hién va dung din cha Excel.exe Application. Quit ‘Thodt ra khéi tmg dung (thot khéi Excel) Ngoai ra déi tuong Application con cé mét sé thuéc tinh hu ich sau: 8.1.1- Thuéc tinh Calculation oe aos International | © | Eror Checking. Speling Security Cleulstion di Tran Custombists | Chart 2) Automatic (catctow fF © Automatic except tables | Ettertion Maxisnum iterations: {100 exer change: Workbook options update remote refer ] Save external [nk values [Clseciion as deplayed {7 cept labels in formulas [J 1904 date system Hinh 8-4: Ciza sé Options cua Excel Khi lam viée véi bang tinh c6 nhiéu céng thtic tinh toan, viéc thay déi sé ligu dau vao sé lam thoi gian tinh toan lai dang ké. Bé rut ngan th gian tinh todn, ban st? dung thuéc tinh Calculation trong cau lénh dudi day 6 dau mat thi tuc 68 Application.Calculation = x1CalculationManual Dong lénh trén co tac dung lam tam thoi ding tinh todn trong Excel. B Excel lam vige binh thuong thi 6 cudi thi tuc ban-ding quén dong lénh sau Application.Calculation = x1Calculationautomatic Dong lénh trén khdi phuc ché d6 tinh toan tw dong cila Excel khi thi tuc da the hién xong. Hai dong [nh trén lm thay déi ché d6 tinh todn trong menu Options/Calculation (hinh 8-1), 8.1.2- Thuge tinh ScreenUpdating Trong qua trinh tinh toan, cla s6 man hinh Excel ludn duoc cap nhat lai gay hién twong khé chiu (nhdp nhay). Khi dé, ban str dung thude tinh ScreenUpdating voi déng lénh & dau va & cuéi tha tue: Application. ScreenUpdating=False ‘Huy cap nhat man hinh Application. ScreenUpdating=True ‘KhOi phuc cap nhat man hinh CGng nhu doi véi thuéc tinh Calculation, thudc tinh ScreenUpdating gitip bang tinh ctla ban tinh todn nhanh hon 8.1.3- ThuGc tinh DisplayAlerts Khi lam viéc trong Excel, ban thong bat gap nhiing thong bao ty dong nhu “Do you want to save this file...”, “Data may exist in the sheet(s) selected for deletion...” khi thy hién mdt s6 céng viéc nao d6. Bidu dé gay can tro €én su hoat dong lién tuc ctia thd tue bang cach yéu cau ban phai xc nhan lai hanh dong, Thudc tinh DisplayAlerts sé giup ban diéu khién ché ¢6 tw dang théng bao. Ban hay stv dung hai dong lénh 6 dudi day & dau va cué! tha tue: Application .DisplayAlerts=False ‘Huy bé théng béo ty déng cBa Excel Application.DisplayAlerts=True ‘Khédi phyc théng bdo tw déng cia Excel Vi du vé cach xoa Sheet3 ma khéng bi théng bdo 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 dug st dung trong cdc vi du 69 8.2- BGI tuong Window Déi tuong Window dai dién cho cia 86 teng dung hién thi trén man hinh: Nhiing dac tring cia worksheet nhu thanh scroll bar, 1w6i 6 la nhting thudc tinh cia ctva sé dé. B4i twong Window la mét thanh phan trong tap hop Win- dows. Tap hop Windows ctia déi tong Application chia toan bé cdc cra sb trong ting dung, nhung ngu¢c lai tap hop Windows ctia déi twong Workbook chi chtva nhiing civa sé trong workbook duge chi dinh. Window nao dang lam viéc (chtva con chudt) thi duoc goi ActiveWindow. Khi lam viéc v6i mot sé workbook, néu ban can so sanh hoac hyp nhat di? ligu hay muén nhin thay céc workbook dang mé, ban siv dung phuong thivc NewWindow, Arrange. Bang 8-2: Xac dinh m3t sé thong sé cia ng dung (Window) CAu lénh trong Immediate ‘Thue hign’ Active Workbook.NewWindow Windows. Arrange Windows(1).DisplayGridlines= False Windows(2).Activate *2ActiveWindow.Caption 2ActiveWindow.ActiveSheet. Name ActiveWindow. WindowsSt; x1 Normal ActiveWindow.Caption = "Vida" Hién workbook duge kich hoat trong cita sé moi Hién toan bd workbook dang mo trén man. hinh 86 tht nhat. Khong cho hign hudi 6 tai et Kich hoat cra sé Window the hai. Xéc dinh tén cla cia sé Window dang kich hoat. Xde dinh ten cia sheet hién hAnh trong ActiveWindow Thay déi kich c& cia s6 cha ActiveWindow nhu xINormai (binh thutmg), xIMaximized (dn hét c&), xIMinimized (nho hei e) Déi tén cia ctta s6 Window dang kich hoat thanh "Vidu". Truong hop lam vig oi cdc clra Sd Window trén man hinh, ban co thé quyét dinh cach sp xép chung. Thuéc tinh Arrange voi mét s6 tham sé sé giup ban thuc 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 sdp xép dé duge ggi la phuong thc ArrangeStyle. Néu ban bé qua phuong thtrc ArrangeStyle, cac ctra s6 duge sp xép kiéu in ké (kiéu mac dinh). 70 Bang 8-3: Cac kiéu sdp xép trén ctra sé Window Hang so xlArrangeStyleiled 1 xlArrangeStyleCascade 7 xlArrangeStyleHorizontal 2 xlArrangeStyleVertical 3 6 sip xép theo hang ngang Cie cita sé sip x€p theo hang doc Tiled Vertical Cascade Hinh 8-2: Cac kiéu sip xép trén cifa sé Window Ngoai cach str dung gia tri haing sé trén dé s4p xép kiéu ctva sd, ban co thé stv dung gia tri tong tng. Vi du dé sap xép cac ctva sé theo kiéu tang, énh VBA sau ban viét doan ma Windows Arrange ArrangeStyle:=xlArrangeStyleCascade hoac Windows Arrange ArrangeStyle: 8.3- Ddi twong Workbook Nhu cac ban da biét, Workbook la déi tong quan ly, lu trie cac worksheet, Béi twong Workbook dai dién cho workbook trong Excel {a mét thanh phan trong cla tap hop Workbooks. Tap hop Workbooks chiva toan bé céc déi 'wong Workbook hién dang durgc mé trong Excel. Lam thé nao ban diéu khién workbook? Ban khéng thé kam vide tren worksheet néu ban khong biét cach mé workbook moi. Ban khdng thé dong workbook trén man hinh néu khdng biét cach thy hién. BS thu hién cac C6ng viéc trén, ban stv dung hai phuong thivc cla VBA, dé la Add va Close. Moi cc ban xem bang dudi day: ” Bang 8-4: Lam viée véi déi trong Workbook Cau iénh trong Immediate Thuc hién Workbooks.Add Them mot workbook mdi. 2Workbooks(1).Name Xde dinh tén workbook du tién ?Workbooks.Count Xée dinh s6 workbook dang mi. Workbooks(2).Activate Kich hogt workbook thit hai (dang md) Workbooks("Baitap.xls").Activate , Kich hoat Baitap.xls, ActiveWorkbook Saves Lita workbook dang kfch hoat véi tén fi Filename:="Baitapmoi.xls" "Baitapmoi.xls” Workbooks(1).Close Dong workbook dau tin. ActiveWorkbooks,Close Déng workbook dang dufse kich hoat vi SaveChanges:=False Khong luu nhimg gi thay déi Workbooks.C Déng todn bo workbook dang md, 8.4- Ddi tu@ng Worksheet Worksheet fa déi twong quan ly, Iwu trir cdc 6, hang, cdt va cdc déi trong d6 hoa nam bén trong (nhu cac hinh dug tao ra trong Drawing hay di khién nam trong Form, Control Toolbox). Béi trong Worksheet dai dién cho worksheet va la thanh phan cua tap hop Worksheets. Tap hop Worksheets chi#a toan bé déi tong Worksheet trong Workbook Nhu vay, cdc déi tung mang tinh phan cp, déi tong nay chtra déi kia. Vi vay, mot s6 thudc tinh, phuong thire ctia’déi tong nay cling ce thé thuc hién duoc déi voi déi tuong kia. Sau day, ching ta tim hiéu vé cach didu khién déi tong Worksheet 8.4.1- Xae dinh cdc théng tin trong Worksheet Ban c6 biét bang tinh Worksheet trong Excel lon nhu thé nao khong? Worksheet 6 bao nhiéu 6, cét va hang? Néu ban c6 quén thi hay st? dung thudc tinh Count. Két qua thé hién 6 hinh dudi Bang 8-5: Xac dinh cdc thong tin trong Worksheet Cau Jénh trong Immediate Thuc hién ?Cells.Count Nae din ton bé 6 trong mot worksheet ?Rows.Count Nae dinh s6 hang tong mot worksheet 2Columas.Count Nac dinh $6 cot 6 trong mot wor 72 367772 Hinh 8-3: Xac dinh cdc théng sé cua Worksheet va gan gid tri vao trong Worksheet 8.4.2- Nhdp di liéu vao trong Worksheet Nhérng di ligu duoc nhap vao worksheet co thé la chudi, sé hodic cong thu Dé nhap dé ligu vao 6 hoac khdi 6, ban c6 thé str dung hai thuéc tinh cia Range. 86 chinh la thuéc tinh Value va Formula Str dung thuéc tinh Value ActiveSheet .Range("A1:C4”) .Value St dung thudc tinh Formula: 4 * 25” ActiveSheet .Range("A1:C4”) .Formula Trong ca hai vi du trén, cdc 6 trong vung A1:C4 déu hién 100, dé chinh ‘a két qua cla cong thre 4 x 25. Ban c6 thé thay cong thuc bang gid tri cu thé nhu bang 8-6. Bang 8-6: Nhap du’ liéu vao trong Worksheet Cau lénh trong Immediate Thue hien Ra ‘2").Formula Nhap vo 6 C2 chudi "Excel Range(( ‘ormula = 24 hodc Nhap s6 24 vao 6 AL Value = 24 2").Formula= "=K5 * 4" Nha 6 B2 céng thife: =K5 * 4 8.4.3- Diéu khién Worksheet ‘Trong qua trinh lam vic véi céc worksheet, ban cé thé cdn bé sung them worksheet moi vao workbook, chon worksheet nao dé hodc mat nhom clla worksheet, di ten worksheet, sao chép, di chuy&n, xoa worksheet,... Mot sé Phuong thir trong bang dudi day sé gitip ban thy hién cdc céng viée dé 73 Bang 8-7: Diéu khién Worksheet en a Cau lénh trong Immediate Thyc hien Worksheets.Add ‘BS sung them worksheet méi. ?Workshcets(1).Name_ Xac dinb ten worksheet dau tién Worksheets(3) Select Chon worksheet thtt 3. Worksheets(Array(1,3,4))Select Chon uh6m worksheet thi what, thit 3.va thit 4 Worksheets("'Sheet").Activate Kich hoat bang tinh c6 tén "Sheet]" Worksheets(""Sheet2").Move Sheet? dimg trude Sheet Before:=Worksheets("Shect!") heets("Sheet3").Move Chnyéu Sheet3 dime ngay sau w orksheet du Works After:=Worksheets(1) wien Worksheets("Sheet2").Name= "BP 1" D6i ten Sheet? thank "/3T 1". Worksheets. Count Xéc dinh sO worksheet trong workbook. Worksheets. Add ‘Them 1 worksheet 6 cudi cling trong workbook ‘After=Worksheets(Worksheets.Count) ign hanh. Workshects("Sheet4") Visible = False Lam du Sheet4 trong workbook bign binh Worksheets(Array("Sheet Lam fin Sheet], Sheet trong workbook hign "Sheet4")). Visible = False hanh Worksheets("BT 1") Delete Xoa worksheet BT 1 trong workbook hign hank Nhw vay, ban sé thac mae vé cach sv’ dung phuong thtrc Select va Activate, c6 nhiing gi giéng va khac nhau? Dudi day la sy giong va khac xnhau gitva chung - Phuong thie Select va Activate oo thé hoan Géi cho nhau néu chi mot worksheet duge chon - Khi tién hanh nhom worksheet, phuong thie Activate sé quyét dinh work- sheet nao trong nhém duoc kich hoat. Nhu ban da biét khi lam viee trong Excel, chi mét worksheet duge kich hoat tai mot thoi diém Trong bang 8-7 & trén, thudc tinh Visible c6 tac dung lam hién/an worksheet bang gid tri “True” hoac “False”, cong viée nay la can thiét khi ban khéng muén ai do lam thay déindi dung cla worksheet do nhu’ bang tra, danh muc. tigu chuan,.. Tuy nhién voi cach nay, ngudi khac van cé thé phuc hoi nhiing worksheet bi 4n bang cach vao menu Format/Sheet/Unhide (hinh 8-4). Nhu vay, lam thé nao dé an worksheet ma khéng bi hien nhu tal hinh 8-4? Khi do ban phai str dung gia tri xIVeryHidden (siéu an) thay vi False. Vi du dé lam siéu an Sheet1, ban ding cau lénh sau Worksheets ("Sheet1”) .visible = *1VeryHidden hap Unhide Sheet p khac nhu dong é phuc héi nhu’ ban dau, khong thé str dung phurong pl thong thuong nhu & hinh 8-4 ma phai stv dung phuong pl fénh sau: 74 Worksheets (*Sheet1”).Visible = True ‘Hin Sheet1 Ngoai ra, ban 06 thé g& bé thudc tinh siéu dn bang cach vao civa so VBE (trong trong hop dur an khéng bi bao vé), chon déi tuong Sheet bi siéu an va tim dén thudc tinh Visible cia chting. Gia tri ca thuéc tinh Visible nhu sau (hinh 8-5) - xlSheetVisible (hoac -1) Hién sheet duoc chon. - xISheetHidden (hoac 0) : An sheet duoc chon - xlSheetVeryHidden (hoac 2); Siéu An sheet duoc chon | Sheet1 Worksheet ‘Alphabetic [categorized | Sheet False [DisplayRightToLeft False EnableAutoFiter False True False False 0 - xiNoRestrictions fo- xisheetHidden 2 - xiSheetVeryHidden Hinh 8-5: Gan tr] xISheetVisibie cho thugec tinh Visible cia Sheet 75 8.5- Di twong khéi_ 6 (range) va 6 (cell) Dé lam viéc véi déi tuong 6 hay khdi 6 trong qua trinh xt? ly hay tinh toan, VBA giip ban tham chiéu dén (chon) cdc khéi 6 dé nhanh chdng, thuan tién, Co nhiéu thudc tinh c6 thé gidp ban thy hién cdng viée nay nh Range, Cells, Offset, Rows, Columns, 8.5.1- Thuéc tinh Range Ban cé thé str dung VBA dé tham chiéu dén 6 hoc khéi 6 trong worksheet. Néu muén gan dé liéu vao worksheet, ban sé phai sir dung dén thudc tinh Range. Thudc tinh Range sé tham chiéu dén 6, khéi 6 trong bang tinh. Kiéu tham chiéu khi str dung thuéc tinh Range cé dang A1 (tén cét va hang). Dia chi 6 1u6n phai nam trong dau ngoac kép (vi dy: "A1"). Ban co thé tham chiéu dén khdi 6 khi ste dung dau hai cham (vi du: “C3:G8") hoac tham chiéu tivng 6 riéng Ié khi stv dung dau phay (vi du: “A3, C5"). Bang 8-8: Su dung cdc thude tinh Range Thuc hién Chon 6 don BI Range(""BI:B6") Select Chon kh6i 6 tit BI dén BG F4:K30").Select Chon 2 khdi 6 B2 dén B7 va F4 dén K30 Chon 6 riéng 18 C1, D2, G6 Chon cot C 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 Ranget 5:5, 8 lect Chon hang 2 ing 5, hang 8 Range("B:B, D:D, G:G") Select Chon co B,D va Vi du: Voi workbook cé tén Popupmenu, trong worksheet Sheet, ban gan néi dung “Trudng DH Mo Dia chat” vao 6 B3. Sau do, cho néi dung ch 6 dAm, nghiéng, mau do va nén mau vang Sub Thunghiem() Workbook (*Popupmenu.x1ls”). Activate Sheets ("Sheet1”) .Range ("B3”) Select ActiveCell.FormulaR1Cl = “Truéng 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 rS hon mét sé thuéc tinh da str dung trong thi tuc trén ctia déi iwong Range, ban xem muc 8.5.12. Khi ding voi kiéu khéng xdc dinh, Range tra vé mét day 6 trén sheet dang hoat déng. Dé tranh kiéu “Rau éng no cém cam ba kia”, ban hay kich hoat mdt bang tinh bang phuong php Activate truéc khi dung thuée tinh Range ma khéng cn chi ra gidi han cu thé, Dui day la cach dién vao ving “A1:H8" cac s6 ngau nhién bang cach dat céng thire cho mdi 6 trong ving ma trudc d6 Sheet! da duge kich hoat Worksheets ("“Sheet1”) .Activate Range (“Al:H8”) .Formula = “=Rand()” Ban cling 6 thé dat tén cho vung va chi cho VBA tham chiéu dén tén nay. Vidu, ban ra lénh x6a ngi dung cla mét viing cé tén “Criteria” bang cach Worksheets (1) .Range (“Criteria”) .ClearContents Néu stv dung mét tham sé (argument) ma tham s6 dé [a dia chi day 6, ban phai dinh ré dia chi do theo kiéu A1 (ding kigu R1C1 sé bi bao 16i) Ngoai ra, ban co thé thy hign déng thoi déi voi nhiéu ving tach biét nhau khi str dung phuong thtrc Union. Vi du vé su hop nhat gitta hai khéi 6 Range1 ("B5:C 10") va Range? ("F30:H32") khi sir dung phuong thtrc Union, nh@ing 6 trong vung do duoc dién day bdi céng thtrc =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 chi: Ban cé thé ding ngo: vudng [] 48 chon khdi 6 thay vi () Vi dy [A1:A3].Select la céch chon khéi 6 giéng nhu Range("A1:43") Select 77

You might also like