Professional Documents
Culture Documents
MC LC1
1. Ghi v thc hin macro ..................................................................................... 4
1.1. Ghi macro trong trng hp s dng tham chiu a ch tuyt i ........ 5
1.2. Chy macro khi s dng bng iu khin macro (Macro dialog box) ...... 6
1.3. Ghi macro trong trng hp s dng tham chiu a ch tng i ...... 7
1.4. Dng phm tt thc hin mt macro (shortcut key) .............................. 8
2. Cch thc hin mt macro n gin ................................................................. 8
2.1. Thc hin macro t mt i tng ho trong worksheet...................... 9
2.2. Chy macro t nt lnh trn thanh cng c ............................................. 10
2.3. Chy macro t lnh trong menu ca Excel .............................................. 12
2.4. Thay i la chn trong macro ................................................................ 15
3. Sa macro ........................................................................................................ 15
3.1. Dng form chung (General form) ............................................................ 15
3.2. To ra nhng thay i .............................................................................. 17
4. Ng php VB (Visual Basic Grammar) .......................................................... 17
4.1. Cc i tng (Objects) ........................................................................... 17
4.2. Cc phng thc (Methods)..................................................................... 19
4.3. Cc thuc tnh (Properties)....................................................................... 20
4.4. Cc bin (Variables) ................................................................................. 20
4.4.1. Kiu d liu trong VBA ..................................................................... 21
4.4.2. Khai bo kiu d liu ........................................................................ 22
4.5. S dng mng (Array).............................................................................. 24
4.5.1. Mng c chiu di c nh ................................................................ 24
4.6. S dng With - End With ......................................................................... 26
5. S dng gip Help ..................................................................................... 26
5.1. Ti thi im ang vit code .................................................................... 27
5.2. S dng hp thoi gip vi ch c th........................................... 27
5.3. Trnh duyt i tng............................................................................... 28
5.4. Cc file v d ............................................................................................ 32
6. Mt s chc nng iu khin trong VBA ....................................................... 33
1
Daipv78@gmail.com
1.2. Chy macro khi s dng bng iu khin macro (Macro dialog
Bn cho chy macro trn t Sheet2 nh sau:
1. Chn sang Sheet2 v bm vo no ngoi B3.
2. Trong menu Tools/Macro, chn Macros (hnh 1).
3. Bm vo macro c tn Address_abs trong danh sch macro (hnh 4).
4. Bm vo nt Run.
10
Code:
1. Xo sch ni dung ca Sheet2.
2. Bm chut vo nt Smiley Face trong thanh cng c Macro1.
12
13
14
16
Range(B3).Select
4.3. Cc thuc tnh (Properties)
Mi i tng u c cc c im ring. Thng thng thuc tnh iu
khin hnh dng xut hin ca i tng.
i vi i tng Range, cc thuc tnh c trng nh sau:
Code:
ColumnWidth
Font
Formula
Text
Value
Thuc tnh c th c coi gn nh l tnh t. N c thit lp s dng
trong cu lnh nh sau:
Object.Property = Value hay Noun.Adjective = Value
Vi macro trn:
ActiveCell.FormulaR1C1 = Nguyen Van Hung
Tt c cc i tng u c thit lp cc phng php (methods) v
nhng thuc tnh (Properties) trong chng.
Cu lnh nh
Range(C3).ColumnWidth = 14
s thit lp chiu rng ca ct cha C3 rng 14. Excel mc nh chiu
rng ca ct l 8.43 im (point).
4.4. Cc bin (Variables)
Cng nh cc ngn ng lp trnh khc, bn c th s dng cc bin trong
vic tnh ton. Bnh thng, VBA khng yu cu khai bo (declare) nhng bin.
VBA lun t ng lu gi i vi nhng bin vo ln u tin bn s dng.
Nhng bin c to ra t ng l cc dng ca bin th (Variant) v c th l
nhng kiu d liu nh cc chui (strings), s (numbers), gi tr Boolean, cc li
(errors), cc mng (arrays) hoc nhng i tng (objects).
V d di y l khai bo n nh l s 34 i vi bin X.
X = 34
Trong v d di y, bin s Number1 v Number2 c a ra gi tr
ban u v s dng chng trong tnh ton (v chng l s).
Number1 = 3
20
Number2 = 9
Mynumber = Number*Number2
4.4.1. Kiu d liu trong VBA
Mi ng dng thng x l nhiu d liu, ta dng khi nim bin lu
tr d liu trong b nh my tnh, mi bin lu tr 1 d liu ca chng trnh.
Mc d VBA khng i hi, nhng ta nn nh ngha r rng tng bin trc
khi truy xut n code ca chng trnh c trong sng, d hiu, d bo tr v
pht trin. Nu bn cn nhng s liu c c trng ring (nh s nguyn, thp
phn, chui, mng,...) s dng trong macro, bn c th khai bo bin .
Cng nh quy nh t tn ca macro, cch t tn cho bin nh sau:
Tn bin c th di n 255 k t.
K t u tin phi l mt k t ch (letter), cc k t tip theo c th l
cc k t ch (letter), k s (digit), du gch di (_).
Tn bin khng c cha cc k t c bit nh cc k t : ^, &, ),(,%,
$, #, @, !, ~, +, -, *,
VBA khng phn bit ch HOA hay ch thng trong tn bin.
Nn chn tn bin ngn gn nhng th hin r ngha.
Khi vit tn bin ta nn vit hoa ch u tin ca mt t c ngha.
Khng c dng tn bin trng vi cc t kho nh : Print, Sub,
End(t kha l nhng t m ngn ng VBA dng cho nhng thnh phn
xc nh ca ngn ng
21
End Sub
Kt qu th hin hnh v di y:
Hnh v 16: Khai bo Option Explicit v bin dng chung trn cng
23
24
MsgBox Arr(1) & Chr(13) & Arr(2) & vbNewLine & Arr(3) & vbCrLf &
End Sub
27
28
29
30
31
5.4. Cc file v d
Excel a ra mt s file v d c tn l Samples.xls. Hu ht i vi mi
phin bn Excel khc nhau th ng dn n file ny cng khc nhau. Trong
Excel 2003, bn c th tm thy file ny ti ng dn sau:
C:\Program Files\Microsoft Office\Office10\Samples.xls ???
Samples.xls cp nhiu ng dng ca Excel. Mi sheet hng dn mt
phn cng vic. Ni dung c lin quan n VBA l Chart Labeling, Repeating
Tasks, Arrays, API examples, Events, Automation, ADO,... Hnh nh v file
Samples. xls trong Excel 2000.
32
33
Auto Data Tip: Hin th danh sch cc d liu khi khai bo bin.
35
36
37
38
39
7. Vit macro
Khi bn tin hnh ghi (record) macro, Excel s t ng to module v b
sung n vo trong workbook v vit li nhng hnh ng bn ghi thuc v
module .
Khi bn mun vit m (code) trong workbook, bn c th b sung module
trong workbook . S ghp ni cho pht trin macro c gi l Visual Basic
Integrated Development Evironment (IDE). Macro c trong module c hin
ra trong IDE thay th cho bng tnh trong workbook (nh Excel i trc 97).
7.1. Vit macro
Trc tin chuyn sang workbook mi (nhng cho php workbook c
vn m) nh sau:
1. Tip theo bm chut vo nt New trong thanh cng c (toolbar), hoc
vo menu File ri chn New.
2. Bm chut phi ti tn ca Sheet1 v chn Rename trong menu tt.
3. G ni dung Text ri n Enter.
Vit macro:
1. T menu Tools/Macros bn chn Visual Basic Editor.
2. Trong ca s Microsoft Visual Basic bn vo menu Insert v chn
Module (hnh 36).
3. Nu cn, bn c th thay i tn ca module theo mun. Trong ca
s Properties, bn cnh (Name) bn chn Module1 v sa thnh Chuongtrinh.
4. Bm vo vng trng ca ca s Chuongtrinh (phn code).
5. G Sub MyFirst ri bm Enter. Khi Excel s t ng in () v End
Sub, th hin nh hnh 36.
6. G cc lnh tng bc mt theo s m t di. Bn c th c c
nhng gip trong Sub Address_abs() ti mc 4 v hnh 13.
B2.
40
41
7.2. Sa cha li
Khi bn g mt dng code trong macro v g Enter, Excel s kim tra
dng . Nu n tm c s hng m hiu c, v d nh range, th s tr
thnh Range (ch r t ng chuyn thnh ch hoa R u).
Nu code thiu hoc tm ra li, Excel s bin ni dung thnh mu
v hin ra bng thng bo li (hnh 39). C nhiu loi li khc nhau, tu vo
li c th m c tng kiu ni dung bng thng bo.
42
43
V d 1:
Range(A1:A3).Select
th vng A1:A3 s c chn (bi en)
V d 2:
Vi workbook c tn Popupmenu, trong worksheet Sheet1, bn gn ni
dung Bo mon DCCT vo B3. Sau cho ni dung ch m, nghing, mu
v nn mu vng.
Code:
Sub Thunghiem()
Workbook(Popupmenu).Sheets(Sheet1).Range("B3").Select
ActiveCell.FormulaR1C1 = "Bo mon DCCT"
Selection.Font.Bold = True
Selection.Font.Italic = True
Selection.Font.ColorIndex = 3
With Selection.Interior
44
.ColorIndex = 6
.Pattern = xlSolid
End With
Range("B4").Select
End Sub
Ghi ch: Thuc tnh Cells c ng dng nhiu khi vit cc vng lp gia
8.3. S hng v s ct (Rows and Columns)
cp n
__________________________________________________
Rows(4)
Hng s 4
Rows
Columns(4)
Ct D (ct th 4)
Columns(D)
Ct D
Columns
45
V d:
Worksheets(Week4).Rows(2).Font.Bold = True
cho kt qu l ton b hng 2 trong sheet Week4 ch m ca workbook
hin hnh.
Ghi ch: Bn c th thc hin i vi nhiu hng v ct khi s dng
phng thc Union.
V d v s hp nht gia hai vng Range1 v Range2 khi s dng
phng thc Union c in y bi cng thc =RAND()
Worksheets("Sheet1").Activate
Set Vung = Application.Union(Range("Range1"), Range("Range2"))
Vung.Formula = "=RAND()"
8.4. t tn cho vng (Named ranges)
Vi mt s trng hp bn phn chia vng cc ra vi tn xc nh d
truy cp v nghin cu. Cng vic ny gn ging nh khi bn s dng chc
nng t tn cho vng trong Excel (xem trong menu Insert/Name/Define...).
Khi bn chn tn nhng vng th Excel s truy cp n vng m bn la
chn. Bn phi t tn nhng vng trc khi vit macro hay dng chnh
macro to tn ca vng.
8.4.1. Tn c to ra ngoi macro
t tn cho vng, u tin bn chn chn nhng bng cch bi
en, sau bn bm vo phn Name Box (phn gc trn bn tri, cng hng vi
thanh cng thc). Sau t tn ca vng ri Enter.
Gi thit rng bn t tn Congty cho cc C2:C8 trong sheet Danhsach
ca workbook Quanly (hnh 40).
V d 1: s lm cc trong vng C2:C8 m ln.
Range([Quanly.xls]Danhsach!Congty).Font.Bold = True
th
46
48
Range(B5).Formula = =R[-3]C[2]-R[-1]C[2]
V d 3:
Thay i cng thc thnh gi tr kt qu.
G6 c cng thc l =G5*G4. V d G5 c gi tr l 2, G4 c gi tr
l 3, nh vy gi tr nhn c ca G6 l 6. Ta s thay ni dung hm thnh gi
tr l 6.
Range(G6).Select
ActiveCell.FormulaR1C1 = =R[-1]C:R[-2]C
Selection.Copy
Selection.PasteSpecial Paste:=xlValues
Application.CutCopyMode = False
50
[Else
<Khi lnh 4 thc hin>]
End If
Trong mu tng qut trn, t kho ElseIf v Else l tu chn (nh biu
th trong du ngoc vung). u tin VB kim tra iu kin th nht, nu sai th
s chuyn sang iu kin th 2,... cho n khi iu kin ng. VB thi hnh khi
lnh tng ng v sau , thi hnh dng chng trnh ngay sau End If.
V d:
Macro di y tm kim gi tr ti A1 (l im trung bnh mn hc).
Nu 10 > A1 8.0 : Hc lc gii;
Nu 8 > A1 6.5 : Hc lc kh;
Nu 6.5 > A1 5.0 : Hc lc trung bnh;
Nu 5 > A1 0 : Hc lc km.
B2 th hin kt qu hc lc.
Sub Hocluc()
Sheets(Sheet1).Select
Range(A1).Select
If ActiveCell >= 8 Then
Range(B2).Value = Hc lc gii
ElseIf ActiveCell >= 6.5 Then
Range(B2).Value = Hc lc kh
ElseIf ActiveCell >= 5 Then
Range(B2).Value = Hc lc trung bnh
Else
Range(B2).Value = Hc lc km
End If
End Sub
51
V d:
Gi s bn tm kim gi tr ca mt v bn mun kt qu nh sau
Dng macro khi trng.
Nhp gi tr Tt vo ngay bn phi nu c gi tr ln hn 40.
Nhp gi tr Km vo ngay bn phi nu c gi tr nh hn 40.
Sub user_If()
If ActiveCell.Value = "" Then Exit Sub
If ActiveCell.Value >= 40 Then
ActiveCell.Offset(0, 1).Value = "Tt"
Else
ActiveCell.Offset(0, 1).Value = "Xu"
End If
End Sub
52
V d:
B2 cha gi tr st ca t, C2 s th hin trng thi ca n.
Sub Trangthai()
Sheets(Sheet1).Select
Doset = Cells(2,2).Value
Select Case Doset
Case 1, 1 to 10
Cells(2,3).Value= Chy
Case 0.75 to 1
Cells(2,3).Value= Do chy
Case 0.5 to 0.75
Cells(2,3).Value= Do mm
Case 0.25 to 0.5
Cells(2,3).Value= Do cng
Case 0 to 0.25
Cells(2,3).Value= Na cng
Case < 0
Cells(2,3).Value= Cng
End Select
End Sub
53
54
ElseIf Hsr > 0.9 And Chisodeo >= 1 And Doset > 1 Then
MsgBox "Day la dat BUN CAT PHA!"
Else
MsgBox "Chua ro ten dat!!!!"
End If
End Sub
55
10.1.2. M t thng s cc nt
56
V d:
Sub VD_Input()
Dim Dangmang
Dim Cot, Hang As Integer
58
59
V d:
Sub VD_Do()
m = 4 m nhn gi tr ban u l 4
Do bt u vng lp
m = m + 1 t gi tr m tng (+ 1)
MsgBox m hp thng bo gi tr m
If m > 10 Then Exit Do nu m > 10 th s thot khi Do
Loop Tip tc lp
End Sub
60
V d:
Sub VD_Do_LoopW()
i=1
Do
Cells(i,3) = i
i=i+1
Msgbox i
Loop While i <= 10
End Sub
61
V d 2: Dng Step
Sub VD_ForNext_Step()
For i = 1 To 7 Step 2
Cells(12, i) = i
MsgBox i
Next
End Sub
62
Next mySheet
MsgBox "So sheet trong workbook la " & i
End Sub
63
Kt qu th hin hnh v di y:
64