Professional Documents
Culture Documents
1. Chn Sheet1.
2. Bm vo B11.
3. Trong menu Tools/Macro, chn Record New Macros (hnh 1).
4. Trong Macro name: g Address_Ref t tn macro (hnh 2).
5. Trong Shortcut key: G ch A, nh vy phm tt s l Ctrl+Shift+A (Nu phm tt b trng vi phm c sn th Excel t
ng b sung thm phm Shift nh trng hp ny).
6. Trong Store macro in: mc nh l This Workbook.
7. Trong Description: bn g ni dung sau
Enter address starting in activate cell position
8. Bm OK.
9. Thanh Stop Recording s xut hin. Bn c th di chuyn n n v tr khc nu thy cn thit.
10. Trong thanh Stop Recording, n vo nt Relative Reference cho m i (khng tc dng).
Microsoft Excel s tip tc ghi macro vi quan h tng i cho n khi no thot khi Microsoft Excel hoc
bn n li vo nt Relative Reference.
11. G tn bn, lp, tn trng v a ch trong cc B11, B12, B13 v B14. Ni dung th hin nh sau:
Nguyen Van Hung
Lop DCCT-DKT K48
Truong DH Mo Dia chat
xa Dong Ngac, Tu Liem, Ha Noi
12. Cho ton b cc ch m.
13. Bm vo B15.
14. Trong Stop Recording, bm vo nt Stop Recording.
Ghi ch: Nu bn mun macro chn c bit, u tin chn u (active cell), sau chn c quan h
vi u, bn c th la chn hn hp a ch tuyt i v tng i trong qu trnh ghi macro.
s dng tham chiu tng i trong sut qu trnh ghi macro, nt Relative Reference lun sng (c tc
dng).
s dng tham chiu tuyt i trong sut qu trnh ghi macro, nt Relative Reference lun ti (khng tc
dng).
2.4. Dng phm tt thc hin mt macro (shortcut key)
Macro Address_Ref c th thc hin nh m t trong mc 2.2. Lc trc phm tt c n nh thc
hin cng vic , hy s dng phng php thay th ny:
1. Ti Sheet2 bn chn vo 1 (v d H14).
2. n t hp phm Ctrl+Shift+A. Khi tn v a ch s xut hin di .
3. Bn hy th thc hin li macro ti cc v tr khc trong Sheet2.
1. Chn 1 no (v d nh J13).
2. Bm vo hnh oval trn, macro s thc hin.
Ghi ch: Nu bn mun di chuyn i tng ho (c macro) ra khi ch khc trong worksheet, s dng
phi chut di chuyn (v bm tri chut th macro s chy). Cn nu bn mun thay i macro khc th
bn bm phi chut trn i tng, chn Assign Macro v la chn macro no bn mun.
3.2. Chy macro t nt lnh trn thanh cng c
Ngoi ra, c th chy macro t nt lnh (button) trong cc cc thanh cng c t to (custom toolbar). V d
nh c th n nh macro Address_abs trong nt hnh mt ci (Smiley Face) nh sau:
1. Trong Categories (trong trng hp bng Customize vn ang m), chn Macros.
2. Ti Commands, chn Custom Menu Item (hnh 11), gi tri v ko chut n phn trng di Macro2 (vng c
khoanh ).
3. Bm phi chut vo Custom Menu Item trong menu m Macro2.
4. Ti thc n tt, i tn trong Name thnh &Work Address (hnh 12).
5. Sau vo Assign Macro chn macro chy.
6. Cui cng l ng bng Customize.
4. Sa macro
Khi bn ghi macro u tin, Excel to ra molule trong workbook . Module cha cc lnh (code) c
vit trong VBA. Cc bc thc hin nhn thy module:
[code/1. T menu Tools/Macro chn Macros.
2. Chn macro Address_abs v bm vo nt Edit.[/code]
Ca s Microsoft Visual Basic hin ra nh hnh 13. Bn c th thy r c cc dng code tng macro khi
cun xung.
4.1. Dng form chung (General form)
T kho (keywords) l s hng c bit trong VB, c th hin bng mu xanh l cy. Tt c cc macro
u bt u vi Sub v kt thc bi End Sub (cn gi l th tc).
Dng mu xanh vi du u dng c gi l ch thch (comments). Li ch thch khng anh hng
n macro v bn c th thay i ni dung ca n. Tn ca macro v li m t s dng (description) trong
qu trnh ghi macro xut hin di dng ch thch. Bn c th dng comments ch thch trong qu trnh
xy dng macro. Khi bn s d dng hiu c cc bc cng nh ni dung thc hin macro.
ng en lin c ngha phn chia cc macro, function (hm) trong module.
ng gch di (_) thnh thong gp cui dng code. Khi code qu di th dng (_) xung dng,
nhng c hiu l code vn lin tc.
Khi bn ghi macro phc tp hn, bn c th gp mt s code khng phi l bn cht ca n (essential).
Excel ghi li tt c nhng g bn thc hin mt cch c th nht, k c nhng i s (arguments) ci t
mc nh trong Excel s dng. Khi bn di chuyn chut n macro no th tn ca macro hin phn
nhiu chng loi xe my nh Future, Future II, Future neo; Super Dream; Wave anh-pha... Vy ta c th
xem Xe my ca hng Honda l mt tp hp, trong tp hp ny c cc i tng cng nm trong mt nhm
nh Future, Future II, Future neo.
V d di y l nhng i tng trong Excel:
Code:
the Excel application (l ng dng trong Excel- i tng ln nht- hnh 14)
a workbook (chnh l file excel)
a worksheet (l cc sheet trong workbook)
a range (l vng)
a chart (l biu )
ColumnWidth
Font
Formula
Text
Value
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 (_).
Sub Kieudulieu()
Dim Tuoi As Integer Tui l s nguyn
Dim Caodo As Single Cao l s
Dim Ten As String Tn ngi l chui
Tuoi = 22 Khai bo tng gi tr Tuoi, Caodo, Ten
Caodo = 6.75
Ten = "Nguyen Van Hung"
MsgBox "Ho va ten: " & Ten & vbTab & vbTab & "Tuoi la " & Tuoi
MsgBox "Cao do ho khoan la + " & Caodo & " (m)"
End Sub
Kt qu th hin hnh v di y:
Const Pi = 3.14159
Dientich = Pi*2
Nu bn mun th tc (Sub) khc truy cp nhng bin s , hy khai bo chng dng u tin ca
Module, trn c cu lnh Sub (hnh 16). Trng hp ny hay s dng khi bn c mt bin s dng chung
cho chng trnh.
Ngoi ra, bn c th yu cu phi khai bo ton b bin s bng cch s dng Option Explicit. Nu c bin
no cha c khai bo, VBA s bo li ngay (hnh 16)
Hnh v 16: Khai bo Option Explicit v bin dng chung trn cng
Trong v d tip theo, bin s khai bo gi tr ban u (bng 0) v sau khi s dng phng php m
cc trong vng B1:B10 tho mn iu kin gi tr (value) trong nh hn 40. Bin s D s b thay i.
Sub VD_Bienso()
Dim Marks As Range
Dim C, D As Integer
Set Marks = Range(B1:B10)
D=0
For Each C in Marks
If C.value < 40 then
D=D+1
End If
Next C
MsgBox Gia tri moi cua bien so D la & D
End Sub
5.5. S dng mng (Array)
Mng l kiu d liu c bit v hay c ng dng trong vic thng k, tnh ton,... nn c trnh by
mc ring. Cc mng (Arrays) cha cc bin s c sp xp theo trnh t quy nh. Mi bin s c gi l
phn t ca mng. Mng c bin trn v bin di, cc phn t trong mng l lin tc. V d nh danh sch
hc sinh trong mt lp, gi tr ch tiu n l trong i vi mt ch tiu trong mu. C hai loi bin mng:
mng c chiu di c nh v mng ng.
5.5.1. Mng c chiu di c nh
Th tc Dim c th s dng khai bo trong mng c chiu di c nh m khng cn a gi tr no vo.
V d:
Code:
Dim Arr(4)
Dim Myfriends(1 to 30) As String
Dim Noisuy(1 to 20, 1 to 30) As Single
Mng Arr(4) to ra mng 1 chiu cha 5 phn t. Vi kiu khai bo ny (4), phn t u tin (bin di) l
Arr(0). phn t u tin bt u t 1 th bn phi khai bo Option Base 1 trn u ca th tc (Sub).
Mng Myfriends to ra mng 1 chiu cha c 30 chui (l tn ngi).
Mng Noisuy to ra mng 2 chiu vi kch thc cnh 20 x 30 (tng ng 600 gi tr l s).
Hm s c tn l Array c th to nn mng t cc bin s trong n.
Option Base 1
Sub assignArray()
Dim Arr(4) As String
Arr(1) = "Thang 1"
Arr(2) = "Thang 2"
Arr(3) = "Thang 3"
Arr(4) = "Thang 4"
MsgBox Arr(1) & Chr(13) & Arr(2) & vbNewLine & Arr(3) & vbCrLf & Arr(4)
End Sub
Bn s thy khi s dng With- End With, vic qun l cc i tng v thuc tnh ca chng d dng hn.
6. S dng gip Help
Trong qu trnh vit macro, chc chn bn phi cn n tr gip. Khng c sch no c th vit c ht v
VBA ni ring v cc ngn ng lp trnh ni chung, v nhng kin thc trong rt rng ln. V vy bn nn
s dng tnh nng Help ca VBA. iu c bn nht s dng Help l bn phi bit ting Anh c v
hiu c cc hng dn . Nhng ngi c trnh v lp trnh cao nh ti bit u ch yu s dng sch
ting Anh v c trong Help. Ni dung trnh by di y s cho cc bn hiu c mc tin dng ca
Help nh th no.
6.1. Ti thi im ang vit code
Trong qu trnh vit macro ti ca s Microsoft Visual Basic, bn c th truy cp vo help ti nhng mc
chn chi tit (v d nh Select) nh sau:
- Chn mc c th (di chuyn chut vo ch Select).
- Sau n phm F1. Khi hin ca s Microsoft Visual Basic Help nh hnh 19.
6.2. S dng hp thoi gip vi ch c th
s dng hp thoi gip vi ch (topic) c th, bn thc hin cc bc sau:
- Vo ca s Microsoft Visual Basic ang m (nu cha m th bn vo menu Tools/Maros/Visual Basic Editer
hoc phm tt Alt + F11).
- T menu Help, bn chn Microsoft Visual Basic Help.
- Bn c th thc hin bng cch s dng chc nng Search (v d g ni dung commandbar, ri Enter)
hoc c th chn ch m bn ang cn tm trong danh mc.
6.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.
Ghi ch: VBA c rt nhiu i tng, phng thc v thuc tnh. Bn khng th no bit c ht hoc s
b qun. VBA cung cp cho bn nhng tnh nng gi nh trn gip cc bn c th khai thc tt hn VBA.
7.2. S dng VBAProject
Trong menu Tools, chn VBAProject Properties, ca s VBAProject hin ra nh hnh 31.
VBProject: nhn dng d n ca bn trong Window Registry (khai bo trong Window) v trong Object
Browser. iu quan trng l n c tn duy nht.
Project Description: M t tn ca d n ca bn trong Type Library. Th vin Type Library cha ton
b nhng m t v i tng v giao din ca d n ca bn.
dng. Chc nng Security iu khin s lm vic ca macro, tc l c th cho hot ng hoc khng.
1. Bn vo menu Tools/Macro v chn Security (hnh 34), ca s Security hin ra.
2. Trong Security, ti tab Security Level c 4 trng hp chn nh sau:
- Very High: t ch an ton rt cao, cc macro khng th chy c, ch tr macro ca Office.
- High: Ch nhng macro c xc nhn mi c th chy, cc macro khc cng b v hiu ha. c macro
c xc nhn, bn phi ng k trong menu Tools\Option\Securitry\More Macro\Trusted Publisher.
- Medium: t ch an ton trung bnh. Khi chn trng hp ny, nu bn m file c cha macro th n s
cnh bo nh hnh 35. Bn c th la chn Enable Macros cho macro hot ng hoc Disable Macros
macro khng hot ng. Trong trng hp file ca bn khng s dng macro (th tc hay hm t to) m
khi m Excel cnh bo nh hnh 31 th file ca bn b nhim virus macro.
- Low: Khng t ch an ton, tc l Excel khng cnh bo bt c vn g c.
3. Nh vy, khi bn s dng VBA th nn t Security Level mc Medium hoc Low. Khi cc th tc,
hoc hm mi hot ng c.
8. 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).
8.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.
Trc , macro ca bn cha cc lnh n gin.
- Bc 1: Chn sheet c tn Text (dng Sheets(Text).Select)
- Bc 2: G on I can write macros! trong B2 trong sheet .
- Bc 3: Bi m ch.
Cui cng, bn kim tra (test) li macro Text:
1. Quay tr v sheet Text.
2. T menu Tools/Macros chn Macros.
3. Trong ca s Macros, bn chn macro c tn l MyFirst v chn Run.
Mi vic s tt p, on ch m I can write macros! s c nhp vo B2.
Khi code b li th s c bng thng bo li, v d nh hnh 37.
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
.ColorIndex = 6
.Pattern = xlSolid
End With
Range("B4").Select
End Sub
Worksheets(Sheet2).Cells(3,2).Value = 2000
tr v s 2000 trong B3 ti Sheet2, trong workbook hin hnh.
Ghi ch: Thuc tnh Cells c ng dng nhiu khi vit cc vng lp gia cc .
9.3. S hng v s ct (Rows and Columns)
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()"
9.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.
9.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
V d 2: Nu workbook Quanly v worksheet Danhsach ang hin hnh, th
Range(Congty).Font.Bold = False
s lm cc trong vng C2:C8 mt m (ch bnh thng).
Workbooks(Congty.xls).Names.Add Name:=Congty, _
RefersTo:==Danhsach!D1:D10
Range(Congty).Font.Italic = True
Kt qu l cc trong vng D1:D10 s b nghing.
9.5. Nhiu vng (Multiple ranges)
Trng hp ny hay c s dng tham chiu n nhiu vng trong macro, c th xo sch ni dung
trong cc .
Worksheets(Bang).Range(A1:C3,H4:L8,P14:Z3 4).ClearContents
s xo sch ni dung nhng ch nh trong worksheet Bang.
Cn i vi nhng tn vng bn t (nh trn), c th thc hin nh sau:
Offset(no_rows_down, no_cols_to_right)
no_rows_down
l s nguyn v c hiu l xung di bao nhiu dng.
no_cols_to_right
l s nguyn v c hiu chuyn sang phi bao nhiu ct.
V d 1:
Nh hnh 41, gi thit B1 l hin hnh. By gi bn dng Offset ch trong C2 c mu , C5 m,
C8 nghing, C9 c ni dung X nghip kho st a k thut.
Sub Offset()
Range("B1").Activate
ActiveCell.Offset(1, 1).Font.ColorIndex = 3
ActiveCell.Offset(4, 1).Font.Bold = True
ActiveCell.Offset(8, 1).Value = "X nghip kho st a k thut"
ActiveCell.Offset(8, 1).Font.Size = 12
Range("E9").Activate
ActiveCell.Offset(-1, -2).Font.Italic = True
End Sub
Kt qu th hin hnh 41.
Range(B5).Select
ActiveCell.FormulaR1C1 = =Sum(R[-3]C:R[-1]C)
V d 2: Nhp vo cng thc = F2-F4 trong D5.
Ni dung R1C1 trong FormulaR1C1 c th khng cn dng n v nu bn mun, 2 dng trn c th ghp
thnh 1 nh sau:
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
Range(G6).Select
ActiveCell.FormulaR1C1 = =R[-1]C:R[-2]C
Selection.Copy
Selection.PasteSpecial Paste:=xlValues
Application.CutCopyMode = False
Dng lnh cui cng l lnh hu b ch trng thi Cut/Copy (ng gch nhp nhy bao quanh
chn).
If <iu kin> Then <dng lnh 1> [Else <dng lnh 2>]
Trong ch dn trn, cc thng s trong [ ] l tu chn, c th b qua nu thy khng cn thit.
Nu <iu kin> c toi nguyn (ng - True) th <dng lnh 1> c thc hin, cn nu khng c
toi nguyn (sai - False) th <dng lnh 2> c thc hin.
Thng thng, bn hay s dng cu lnh If ... then ... Else m khng cn phi gii hn s dng lnh. Mu
nh sau:
Nu
Nu
Nu
Nu
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
Ghi ch: Bn c th b qua dng Range(A1).Select v thay bng If Range(A1).Value >= 8 Then.
Ngoi ra, bn cng c th s dng If kt thc macro, cu lnh nh sau c th s dng kt thc macro.
(nu hin hnh m trng th s kt thc Sub, khng cn phi c End If)
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
10.2. S dng Select Case
Select Case l mt dng ca If ... Then ... Else, c s dng khi c nhiu iu kin chn lc gi tr. Cu
lnh nh sau:
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
10.3. Xy dng cc iu kin
Trong nhiu trng hp, iu kin lc d liu tr nn kh phc tp. Nu ch s dng If hay Select Case
th cng vic s rt cng knh, rc ri. Trong hon cnh , And v Or gip bn thc hin cng vic , gip
chng trnh sng sa v d c.
10.3.1. S dng And
Cu lnh nh sau:
If <iu kin 1> And <iu kin 2> And <iu kin 3> Then
<khi lnh 1>
Else
<khi lnh 2>
End If
<khi lnh 1> ch thc hin khi c ba iu kin u ng. Ch 1 trong 3 iu kin sai th <khi lnh 2> s
thc hin.
Tng t i vi Or.
V d:
Bn c th xc nh tn t da vo h s rng t nhin, ch s do, st.
Sub Ten_dat()
Dim Hsr, Chisodeo, Doset As Single
Hsr = InputBox("Vao gia tri he so rong:")
Chisodeo = InputBox("Vao gia tri chi so deo:")
Doset = InputBox("Vao gia tri do set:")
If Hsr > 1.5 And Chisodeo >= 17 And Doset > 1 Then
MsgBox "Day la dat BUN SET!"
ElseIf Hsr > 1.0 And Chisodeo >= 7 And Doset > 1 Then
MsgBox "Day la dat BUN SET PHA!"
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
11.1.2. M t thng s cc nt
Ghi ch: Ti mi kiu thng ip, m thanh bo khi hin th thng ip i km theo s khc nhau.
11.1.4. Xy dng tham s cho MsgBox
s dng tu bin hp thng bo, bn phi bit phi hp cc thng s v nt lnh. Vic s dng hp
MsgBox c ngha rt quan trng trong vic iu khin chng trnh. hiu chi tit, cc bn xem v d
di y.
Sub Nhangui()
Dim Truonghop As Integer
Truonghop = MsgBox("Ban co muon thoat khoi chuong trinh khong", vbYesNoCancel + vbQuestion +
vbDefaultButton1,Chuong trinh tinh lun)
If Truonghop = vbYes Then
MsgBox "Ban vua chon nut Yes.", vbInformation
ElseIf Truonghop = vbNo Then
MsgBox "Ban vua chon nut No.", vbCritical
ElseIf Truonghop = vbCancel Then
MsgBox "Ban vua bam nut Cancel.", vbExclamation
End If
End Sub
Hnh v di th hin kt qu chy Sub trn v hp thng bo khi bn chn nt No. Trong Sub trn, bn c
th thay
V d:
Sub VD_Input()
Dim Dangmang
Dim Cot, Hang As Integer
Set Mang = Application.InputBox("Vao mang:", "Linh tinh", Type:=8)
Cot = Dangmang.Columns.Count Tnh s ct chn
Hng = Dangmang.Rows.Count Tnh s hng chn
MsgBox "So cot la: " & Cot
Do
<khi lnh>
Loop
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
12.2. Do While ... Loop
Thc hin khi lnh khi iu kin True. Hnh ng s lp vi iu kin True, cho n khi iu kin False th
s thot ra. Mu tng qut:
Sub VD_DoW_Loop()
i = 1 t i lc u bng 1
Do While i <= 10 t gii hn cho i, nu False th thot
Cells(i,1) = i Gn i vo
i = i + 1 Cho gi tr i tng dn
MsgBox i Hp thng bo gi tr i
Loop Tip tc lp
End Sub
12.3. Do ... Loop While
Tng t nh Do While ... Loop, thc hin khi lnh khi iu kin True. Hnh ng s lp vi iu kin True,
cho n khi iu kin False th s thot ra. Mu tng qut:
Do
<khi lnh>
Loop While <iu kin>
V d:
Sub VD_Do_LoopW()
i=1
Do
Cells(i,3) = i
i=i+1
Msgbox i
Loop While i <= 10
End Sub
12.4. Do Until ... Loop
Bn c th thc hin cc khi lnh t u vng lp cho n khi iu kin vn True. n khi iu kin False
th s thot ra. Phng thc ny ging nh vng lp For ... Next. Mu tng qut:
Sub VD_DoU_Loop()
i=1
Do Until i = 10
Cells(i,5) = i
i=i+1
MsgBox i
Loop
End Sub
Tng t i vi Do ... Loop Until.
12.5. For ... Next
Bn c th lp hnh ng vi s ln bit trc. Ta dng bin m tng dn hoc gim dn trong vng lp.
For <bin m> = <im u> To <im cui> [Step <bc nhy>]
<khi lnh>
Next [<bin m>]
Bin m, im u, im cui, bc nhy l nhng gi tr s. Bc nhy c th l gi tr dng (tng) hoc
m (gim). Nu Step khng c ch nh ra, mc nh bc nhy l 1.
Next
End Sub
Trong v d ny, gi tr i tng tng bc 1, 3, 5, 7.
12.6. For Each ... Next
Tng t nh vng lp For ... Next, nhng n lp khi lnh theo s phn t ca mt tp hp i tng hay
mt mng, thay v theo s ln lp xc nh. Vng lp ny rt tin li khi ta cha bit chnh xc bao nhiu
phn t trong tp hp.
Sub ShowWorkSheets()
Dim mySheet As Worksheet
Dim i As Integer : i = 1
For Each mySheet In Worksheets
MsgBox mySheet.Name
i=i+1
Next mySheet
MsgBox "So sheet trong workbook la " & i
End Sub
12.7. Lnh thot (Exit)
Trong mt s trng hp, bn c th thot khi cng vic no khi tho mn yu cu cng vic. Bn c
th s dng th tc Exit nh Exit Do (thot khi vng lp Do ... Loop), Exit For (thot khi vng For ...
Next), Exit Function (thot khi hm), Exit Sub (thot khi chng trnh), Exit Property (thot khi thuc
tnh ang lm vic).
V d:
Sub ExitStatementDemo()
Dim I, MyNum
Do ' t vng lp Do Loop
For I = 1 To 1000 ' Lp 1000 ln
MyNum = Int(Rnd * 1000) ' To s nguyn ngu nhin
Select Case MyNum ' Tnh ton vi s nguyn trn
Case 7: Exit For ' Nu l 7, thot khi For...Next
Case 29: Exit Do ' Nu l 29, thot khi Do...Loop
Case 54: Exit Sub ' Nu l 54, thot khi vng Sub
End Select
Next I
Loop
End Sub
12.8. Vng lp lng
Vng lp c th c lng vo nhau. ng dng ny rt c hiu qu khi bn tnh ton vi mng hay i vi
bng tnh nhiu chiu.
V d:
SubCellsExample()
For i = 1 To 5
For j = 1 To 5
Cells(i, j) = "Row " & i & " Col " & j
Next j
Next i
End Sub
Kt qu th hin hnh v di y:
Excel help
Anh vo Excel Help (not VBA help) v tm theo ng dn trong hnh (Excel < 2007). Excel 2007 trong
MSDN mi c.
MasceHuy
khi gn gi tr cho bin, lc th anh dng: variable = "value", khi th dng: set var = "value". Anh gii thch
gim nh. Cm n nhiu.
PhanTuHuong
Khi bin l kiu gi tr nh single, integer, long, ... th dng lnh gn. Cn khi bin l kiu i tng (bin
i tng) th bn phi thm t kha Set u (v d nh Range).
PhanTuHuong
Ti b sung thm file Sample.xls ca Excel 2000 ( cp) cc bn nghin cu thm, khng hiu sao
Excel 2003 khng thy c file ny.
Samples.rar
Po_Pikachu
PhanTuHuong
ng l khng c code cho nt tht, h dng siu lin kt nhng ti cng khng hiu cch thc hin.
anhtuan1066
Th cng ging nh lin kt bnh thng m ta vn lm thi... bn r chut vo nt, im s thy c 1 ung link hin
ra..
Xem cc bi vit v Hyperlink s bit lm nt ny nh th no.. ni chung l y chang
ANH TUN
Mun bm vo m nt khng chy, hy gi nt Ctrl khi click, khi click vo ri, n cho php sa cha nt ,
v d thay i kch thc, thay i text pha trong, nu mun xem hyperlink th nhy phi phn vin ca
i tng v chn Edit hyperlink
cadafi
Nguyn vn bi bj189
Th ci ny xem:
PHP Code:
Sub Test()
Dim Check As Boolean
Check = MsgBox("Ban chon 'Yes' hay 'No'?", 4) = 6
MsgBox "Bien 'Check' c gia tri = " & Check
End Sub
Th ci ny xem:
PHP Code:
Sub Test()
Dim Check As Boolean
Check = MsgBox("Ban chon 'Yes' hay 'No'?", 4) = 6
MsgBox "Bien 'Check' c gia tri = " & Check
End Sub
Code ngn n khng ng!
Tha Thy, Gi tr 4 v 6 ca Thy l g vy? Lm n gii thch dm em ti sao ra False v True?
Xin cm n Thy!
ndu96081631
Nguyn vn bi minhthien321
Nhng vn cha hiu nguyn l MsgBox "Bien 'Check' c gia tri = " & Check
ndu96081631
Nguyn vn bi minhthien321
Nhng vn cha hiu nguyn l MsgBox "Bien 'Check' c gia tri = " & Check
Tri i.... sao ta?
Th Check c gi tr l TRUE hoc FALSE, ty thuc vo vic ta bm YES hay NO trc
Vy th "gn" Check vo 1 MsgBox th 2 ny na l ra thi
Hic...
Tm li ti cng chng bit gii thch th no (mc d ti thy n qu n gin)
Vn em thc mc l nh vy! V Thy t Check nh 1 msgbox. nhng khi msgbox2 = Check, em nhng
tng n cho ra msgbox ban u, nhng n khng phi vy m li thay th = true or false.
cadafi
Nguyn vn bi minhthien321
t Check nh 1 msgbox. nhng khi msgbox2 = Check, em nhng tng n cho ra msgbox ban u, nhng n khng phi
vy m li thay th = true or false.
Lu nha:
1. Check l 1 bin Boolean nh khai bo t trc.
2. [MsgBox("Ban chon 'Yes' hay 'No'?", 4) = 6] l mt biu thc tr v gi tr l TRUE hoc FALSE
Hong Trng Ngha
Nguyn vn bi cadafi
Lu nha:
1. Check l 1 bin Boolean nh khai bo t trc.
2. [MsgBox("Ban chon 'Yes' hay 'No'?", 4) = 6] l mt biu thc tr v gi tr l TRUE hoc FALSE
ng l i lc mnh ngo p thit, bin Boolean tr v gi tr True or False, mnh qun mt i ci Dim,
trng g ho cuc (thy 4 v 6 lm mnh ng ngn).
ndu96081631
Nguyn vn bi minhthien321
ng l i lc mnh ngo p thit, bin Boolean tr v gi tr True or False, mnh qun mt i ci Dim, trng g ho cuc.
Chuyn thng thi (l con ngi m)
Sn y tng ng ch 1 ci "lu thi" ny, va n va ngm cu
PHP Code:
Sub Test()
MsgBox "Ban da chon " & Choose(1 (MsgBox("Ban chon 'Yes' hay 'No'?", 4) = 6), "'No'", "'Yes'")
End Sub
Hong Trng Ngha
Nguyn vn bi ndu96081631
Sub Test()
MsgBox "Ban da chon " & Choose(1 (MsgBox("Ban chon 'Yes' hay 'No'?", 4) = 6), "'No'", "'Yes'")
End Sub
n cho nng, tuy cay nhng cng kh ngon y nh
(m ng l LU tht, v n "trn" 1 rng cc loi gia v)
gn ging ci trn ---> Cm gic c g c bit hy pht biu nh!
c... c...
Khi Test bit c bit ri, dng hm Choose thay lun Dim, ch cn khai bo g ht! Thy ng l thin
ti!
ndu96081631
Nguyn vn bi minhthien321
Khi Test bit c bit ri, dng hm Choose thay lun Dim, ch cn khai bo g ht!
c bit nm ch: MsgBox vit trc th li xut hin sau v ngc li
c.. c...
-------------------------------------Xem thm ti y :
http://www.giaiphapexcel.com/forum/showthread.php?82676-Gii-p-v-d-ca-thy-phan-thng!