You are on page 1of 8

. . . . . . . . . . . . . .

PHN M U

Microsoft excel l mt cng c mnh dng trong vic phn tch & trnh by cc thng tin. Th mnh ca bng tnh excel, ngoi cc cng thc sn c, cn l macro ca n. K t khi xut hin version 5.0 n nay, ngn ng dng trong excel l Visual Basic for Applications (VBA). l ngn ng lp trnh dng chung cho nhiu phn mm trong windows. Quyn ghi chp ny s nhm gii thiu cch thc lm quen vi macro, v cch thc tun t chinh phc ngn ng VBA trong excel. Bi 1: Nhng macro n gin nht 1. B thu macro Ngn ng macro l mt ngn ng lp trnh tht s. Nhng mt tri ca s mnh m ny l lm cho ta khng d c & hiu ngay c. bc u lm quen vi n ta nh b thu macro, b thu ny lun c sn trong excel. N gip bn to ra nhng tc phm u tay v rt thc t. ri sau ta s to ra nhng macro phc tp, thc hin nhng cng vic theo s thch ca bn! 2. To macro u tay Khi thc hnh vi excel, chng ta i lc cng phi nh dng dy no . Mun dy biu th dng tin VN khng c s l, ta chn dy ; v menu Format -> Cells; ->Number ta chn Currency trong hp thoi Category; trong hp Decimal places ta chn gi tr 0; trong hp Symbol ta chn None; cui cng trong hp Negative numbers ta chn hng th ba (ang l (1.2340)) v nhp v nt OK tr v trang tnh Excel mc nh dng thc tin c hai s l. Trong thc t nhiu khi khng cn nhiu s l n vy!. Chng ta to mt macro nh dng theo kiu tin khng c s l. a./ Chun b:

Ta qut chn cc t A2 n A9; bn chut ln thanh cng thc v nhp cc hm sau: = INT(9 * RAND()) ^ 8 v kt thc bng t hp hai fm CTRL+ENTER b./ To macro V menu Tool -> Macro ->Record New Macro. . .; ca s New Macro xut hin; Trong hp Macro Name ta nhp FormatCurrency v nhp nt OK. Trn mn hnh s hin thm thnh phn thanh Toolbar ca macro. Chng ta bt u thc hin vic ghi v b thu macro: (Vi cc A2:A9 chn), v menu Format -> Cells. . . v chn ngn Number; Tip theo chn Currency trong hp thoi Category; trong hp Decimal places ta chn gi tr 0; trong hp Symbol ta chn None; cui cng trong hp Negative numbers ta chn hng th ba (ang l (1.2340)) v nhp v nt OK tr v trang tnh. Kt thc ghi macro bng cch nhp v nt close trn thanh Toolbar ca macro va xut hin Ch : Mt s thao tc c th c nhiu cch t c; th d t hp phm CTRL +1 s nhanh chng a ta n hp thoi Format Cells; Ta cng c th kt thc ghi macro khi chn trn menu Tool -> macro -> Stop Recording; Trong phn ghi chp ny ch ghi mt cch thc (cn cc cch khc ta t p dng) Tc phm u tay xong; Chng ta nng rut mun bit a con tinh thn n hnh hi ra sao & s chy nhy nh th no! xem hnh hi ta v menu Tool -> Macro; trong danh sch lit k n l tn duy nht m ta n nh: FormatCurrency; Ni dung n nh sau: Code: Sub FormatCurrency() ' FormatCurrency Macro ' Macro recorded 10/10/2006 by Quai Dang

' Selection.NumberFormat = "#,##0_);(#,##0)" End Sub Thc ra ch c ba dng lnh trong macro l quan trng thi; cc dng c du nhy u dng l nhng ghi ch, nhc chng ta ft n cho i nh: tn, tui , fm nng vn hnh . . . c./ Chy macro bit n i ng ra sao ta qut chn vi d liu s trn trang tnh; v menu Tool -> Macro -> Macros; chn tn macro v n nt Run d./ Gn t hp phm tt cho macro V menu Tool -> Macro -> Macros; ca s Macro xut hin tr li; Pha phi ca ca s (CS), ngoi nt Run mi quen, cn c cc nt khc m ta s dn lm quen. V nt k tip ta lm quen l Option; Ta nhp v n hin ln CS Macro Option; Ta bm chut v Shortcut key; n gi phm Shift v nhn tip phm 'F'. (Nh vy l ta gn cho macro FormatCurrency t hp 3 fm CTRL+SHIFT+F Ch : Tt nhin ta cng c th khng gi fm Shift; nhng vic li bt cp hi v d gy xung t! Ch : Ta cng c th gn t hp phm nng ngay t u, sau khi t tn: Khi ta cng thy CS Shortcut key trong hp thoi Record Macro 3. Macro thay i nhiu thuc tnh a./ Chun b: Nhp v B2 chui sau: 'Tng hp s liu thng 10/06'. Chn B2 ny; b./ Thu macro: V menu Tool -> Macro ->Macros . . . Trong CS Macro name nhp tn: 'DinhDangTieuDe'; Trong CS Shortcut key ta gi phm Shift & nhn phm 'D' v nhn nt OK ghi macro mi.. Khi B2 vn c chn, v menu Format -> Cells. . .Tip theo v ngn Aligment; Trong CS Text aligment ta chn ti c hai CS

Horizontal & Vertical u l Center; Sau n nt OK tr v trang tnh; Ta qut chn cc t B2 n F2; Sau nhp v nt Merge and Center tiu canh gia ca cc lit k. Kt thc vic ghi macro DinhDangTieuDe bng 1 trong cc cch nu trn. xem ni dung macro ta nhn ng thi hai phm ALT + F6 m CS Macro v chn tn DinhDangTieuDe; xong ri n chn nt Edit hin mn hnh Microsoft Visual Basic c cha on code sau: Code: Sub DinhDangTieuDe() ' ' DinhDangTieuDe Macro ' Macro recorded 10/10/2006 by Quang Duc ' Keyboard Shortcut: Ctrl+Shift+D Range("B2").Select With Selection .HorizontalAlignment = xlCenter .VerticalAlignment = xlCenter .WrapText = False .Orientation = 0 .AddIndent = False .IndentLevel = 0 .ShrinkToFit = False .ReadingOrder = xlContext .MergeCells = False End With Range("B2:F2").Select With Selection .HorizontalAlignment = xlCenter .WrapText = False .Orientation = 0 .AddIndent = False .IndentLevel = 0 .ShrinkToFit = False .ReadingOrder = xlContext .MergeCells = False End With Selection.Merge End Sub Ci macro trc thc t ch c mt dng lnh; nhng macro ny rt nhiu dng lnh.

c./ Bc u tc ng ln macro: Trc tin , ta bit cc dng c du nhy n u dng l nhng dng ch thch; ta b hn 5 dng. (Ch dng ' Keyboard Shortcut: Ctrl+Shift+D). Nhng ct n dn sau 2 du ngoc n; ca dng Sub DinhDangTieuDe() Ta v menu Debug v chn thanh Compile VBAProject; Nu chng ta khng thy CS thng bo li no th ta bit rng VBA chp nhn nhng thay i ca chng ta (chng t khng c li bin dch.) Hn na ta li bit thm rng, cc ch thch c th ngay sau cu lnh, min trc n c du nhy n; Tip theo ta thc hin nh s v cc dng lnh v sau mnh dn b cc dng lnh t 5 n 11. Ta li thc hin kim li bin dch nh menu Debug nh nu trn; Nu khng c bo li no, ta yn tm bm nt lu li Tip mt bc xa hn, ta t du nhy trc cc s ca cc dng lnh t 14 n 23. Tc l ta v hiu cc dng lnh ny mt cch tm thi; Thc hin php th macro ln cui, nh sau: Xo nguyn dng 2 cha nh dng m macro thc hin; Nhp dng khc thay th (VD: 'BO CO TNH HNH THNG TRC.' v th chy macro DinhDanhTieuDe; Nu n vn lm vic theo ng nh lc cha sa g l k! Code: Sub DinhDangTieuDe() 1 2 3 4 12 13 14 15 16 17 ' Keyboard Shortcut: Ctrl+Shift+D

Range("B2").Select With Selection .HorizontalAlignment = xlCenter .VerticalAlignment = xlCenter End With Range("B2:F2").Select With Selection .HorizontalAlignment = xlCenter .WrapText = False .Orientation = 0

18 .AddIndent = False 19 .IndentLevel = 0 20 .ShrinkToFit = False 21 .ReadingOrder = xlContext 22 .MergeCells = False 23 End With 24 Selection.Merge End Sub Nh vy, macro ca chng ta ch cn l: Code: Sub DinhDangTieuDe() ' Keyboard Shortcut: Ctrl+Shift+D Range("B2").Select With Selection .HorizontalAlignment = xlCenter .VerticalAlignment = xlCenter End With Range("B2:F2").Select Selection.Merge End Sub d./ c & din dch ni dung cc cu lnh: Macro c bt u bng t Sub (tm hiu l t vit tt ca Subroutine); & dng cui ca macro l End Sub; Macro lun c tn, (VD ta c DinhDangTieuDe & FormatCurrency); Hn na tn phi tun th mt quy lut nghim: Khng gm cc khong trng, khng l cc k s u tn.. . ( vic ny VBA s truyn t cho bn r, mt khi bn khng tun th!) Macro DinhDangTieuDe thc ra lm hai cng vic: - Chn B2 & nh dng canh gia theo chiu ngang & chiu dc; - Canh gia on vn bn trn ton b cc "B2:F2" V mt l do no , chng ta c th vit hai dng lnh trn mt hng, nhng phi cch nhau bng du hai chm ':' Range("B2:F2").Select: Selection.Merge

Ngc li, vi cu lnh qu di, chng ta c th b tr trn nhiu dng; lc ny du ngang di '_' c nhp cui dng trn bo cho VBA bit rng dng lnh cn tip theo dng di. Ta xem xt n v d macro dng xp danh sch theo tn ("C1"), nh sau Code: Sub SortByName() Columns("A:C").Select Selection.Sort Key1:=Range("C1"), Order1:=xlAscending, Key2:=Range("A1") _ , Order2:=xlAscending, Key3:=Range("B1"), Order3:=xlAscending, Header:= _ xlGuess, OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _ DataOption1:=xlSortNormal, DataOption2:=xlSortNormal, DataOption3:= _ xlSortNormal End Sub Nh vy, cu lnh th hai trong macro tri di qua 5 dng & ni kt vi nhau bng du gch di (ch c khong trng trc n) Cu lnh ny c hiu nh sau: Ti ba ct A-C chn ( cu lnh trc ), hy xp theo hng tng dn gi tr ti ct C; Tip theo l xp theo th t tng dn cc gi tr ti ct A; V cui cng l xp theo ct B cng theo chiu tng dn ; Bi tp ca bi 1: + To macro xo thanh trang bng tnh (sheet tab): Thng thanh ny nm trn thanh cun ngang, Ta c th v menu Tool-> Option -> View ri b chn hp Sheet Tabs + Chuyn cng thc thnh gi tr: Ti trang tnh chun b ghi macro u tin ta c cng thc = INT(9 * RAND()) ^ 8 ti cc ct A; Bn th lp macro chuyn cc t A2 n A9 ny thnh gi tr! + Ti ct D, bt u t D1, D2 ta nhp tng ng 1 & 2

Ti ct E k bn ta nhp 1 & 4; Ti ct F ta nhp F1 l 36; F2 l 100 Hy to macro thc hin cc hnh ng sau: Chn vng t D1:F2; v menu Edit -> Copy; Sau chn D4 v cng v menu Edit -> Paste Special; ti CS Paste Special ta nh du hp kim Transpose; sau khi dn xong ta nhn phm ESC b vng chn. + Ti trang bng tnh ca VD 3; thit lp macro ghi li nhng hnh ng sau: Chn A1, v menu Edit -> Go to; Trong hp thoi Bi c thm Xem ti y

You might also like