8/18/2016
VBA TRONG EXCEL
L p trình c b n trong excel
PH M TU N MINH
HTTP://DEV4LIFES.NET
1
L I NÓI
U
L p trình đang ngày càng chi m v trí quan tr ng trong công vi c h ng ngày.
nh ng kh i ngành kinh t và k thu t. Nó giúp công vi c đ
c bi t v i
c đ n gi n và nh nhàng h n,
nh ng công vi c l p đi l p l i, nh ng công vi c nhàm chán c n đ
c t đ ng hóa đ tránh
sai sót và gi m thi u r i ro.
Excel là m t công c tính toán h t s c m nh m c a Microsoft, nh ng hàm s n có trong
Excel r t l n, r t nhi u có l đ đ giúp chúng ta x lý các bài toán kinh t , k thu t tuy
nhiên thay vì vi t 10 dòng code thì có l ch c n vi t 1 dòng code thôi, đó ch ng ph i tuy t
v i h n sao? VBA trong Excel giúp chúng ta làm vi c đó, v i các hàm API s n có c ng
v i các hàm API mà các ch
ng trình khác có th tích h p vào Excel nh ph n m m Etabs,
Robot Structural Analyis trong xây d ng…giúp Excel chuyên nghi p và ph bi n.
Cách s d ng VBA trong Excel t
ng đ i đ n gi n, n u b n đã t ng có t duy v l p trình
thì càng d dàng h n. VBA có th s d ng mô hình h
ng đ i t
ng hi n đ i giúp dòng
code s ch s và d hi u.
Trong khuôn kh ebook này, tác gi ch mang đ n nhi u đi u đ n gi n nh t và VBA trong
Excel nh m giúp ng
i đ c có cách nhìn dê dàng và bao quát nh t.
h i – đáp v các
v n đ c th trong VBA m i b n s d ng các hình th c sau:
-
G i email v đ a ch :
t câu h i trên trang web:
Chân thành c m n!
VBA TRONG EXCEL | L p trình c b n trong excel
2
M CL C
1
T o Macro ..................................................................................................................... 5
1.1
Th Developer ........................................................................................................ 5
1.2
Command Button ................................................................................................... 6
1.3
Gán m t Macro ...................................................................................................... 7
1.4
Visual Basic Editor ................................................................................................ 9
2
MsgBox ....................................................................................................................... 10
3
Workbooks và Worksheets ......................................................................................... 12
3.1
Cây đ i t
3.2
Collection ............................................................................................................. 12
3.3
Properties và Method ........................................................................................... 13
it
4
5
ng ....................................................................................................... 12
ng Range ......................................................................................................... 15
4.1
Ví d v Range ..................................................................................................... 15
4.2
Cell ....................................................................................................................... 16
4.3
Khai báo đ i t
4.4
Select .................................................................................................................... 17
4.5
Rows..................................................................................................................... 17
4.6
Columns ............................................................................................................... 18
4.7
Copy/Paste ........................................................................................................... 18
4.8
Clear ..................................................................................................................... 19
4.9
Count .................................................................................................................... 19
ng Range ................................................................................... 17
Bi n ............................................................................................................................. 21
5.1
Integer .................................................................................................................. 21
5.2
String .................................................................................................................... 21
VBA TRONG EXCEL | L p trình c b n trong excel
3
5.3
Double .................................................................................................................. 22
5.4
Boolean ................................................................................................................ 23
Câu l nh If Then ......................................................................................................... 23
6
6.1
7
Else ....................................................................................................................... 24
Vòng l p ...................................................................................................................... 25
7.1
Vòng l p đ n ........................................................................................................ 25
7.2
Vòng l p đôi ......................................................................................................... 25
7.3
Vòng l p ba .......................................................................................................... 26
7.4
Vòng l p Do While .............................................................................................. 27
8
L i Macro ................................................................................................................... 28
9
X lý String................................................................................................................. 31
9.1
Liên k t String ...................................................................................................... 31
9.2
Left ....................................................................................................................... 32
9.3
Right ..................................................................................................................... 32
9.4
Mid ....................................................................................................................... 33
9.5
Len ....................................................................................................................... 33
9.6
Instr ...................................................................................................................... 34
10
Date và Time ........................................................................................................... 34
10.1
Year, Month, Day c a Date .............................................................................. 34
10.2
DateAdd ............................................................................................................ 35
10.3
Date và Time hi n t i........................................................................................ 35
10.4
Gi , phút, giây (Hour, Minute, Second) ........................................................... 36
10.5
TimeValue ........................................................................................................ 36
11
Event (S ki n) ........................................................................................................ 37
VBA TRONG EXCEL | L p trình c b n trong excel
4
11.1
S ki n Workbook Open .................................................................................. 37
11.2
S ki n Worksheet Change .............................................................................. 38
M ng ........................................................................................................................ 40
12
12.1
M ng m t chi u ................................................................................................ 40
12.2
M ng hai chi u ................................................................................................. 41
13
Function và Sub ....................................................................................................... 42
13.1
Function ............................................................................................................ 42
13.2
Sub .................................................................................................................... 43
it
14
ng Application ............................................................................................. 43
14.1
WorksheetFunction ........................................................................................... 43
14.2
ScreenUpdating ................................................................................................ 44
14.3
DisplayAlerts .................................................................................................... 45
14.4
Calculation ........................................................................................................ 46
15
ActiveX Control ...................................................................................................... 47
16
Userform .................................................................................................................. 49
16.1
Thêm Control .................................................................................................... 50
16.2
Hi n th Userform ............................................................................................. 52
16.3
Gán Macro ........................................................................................................ 54
16.4
Ki m tra ............................................................................................................ 55
VBA TRONG EXCEL | L p trình c b n trong excel
5
1 T o Macro
V i Excel VBA b n có th t đ ng hóa các công vi c trong Excel b ng cách vi t m t th
g i là macro. Trong bài này s h c cách đ t o m t macro đ n gi n đ th c hi n m t ch c
n ng nào đó sau khi kích m t m t nút (button).
u tiên ta ph i b t th menu Developer.
1.1 Th Developer
Th này dành riêng cho các b n mu n l p trình trong Excel, còn n u không thì c ng không
c n quan tâm đ n nó làm gì c .
1.
b t th này, th c hi n các b
c sauKích chu t ph i vào b t k đâu trên thanh ribbon,
sau đó kích vào Customize the Ribbon
2. Tích ch n vào ô Developer
VBA TRONG EXCEL | L p trình c b n trong excel
6
3. Kích OK
4. B n s th y tab developer g n tab view
1.2 Command Button
đ t m t nút trên b ng Excel (WorkSheet) c a b n, th c hi n các b
c sau:
1. Trên Tab Developer, kích vào nút Insert
VBA TRONG EXCEL | L p trình c b n trong excel
7
2. Trong khu v c ActiveX, kích vào Command Button
3. Kéo và th nút đó vào worksheet c a b n
1.3 Gán m t Macro
gán m t Macro cho nút trên, th c hi n các b
c sau
1. Kích chu t ph i vào CommandButton1 ( ch c ch n Design Mode đã ch n)
2. Kích vào View Code
VBA TRONG EXCEL | L p trình c b n trong excel
8
Trình duy t Visual Basic Editor xu t hi n.
3.
t con tr chu t
gi a dòng Private Sub CommandButton1_Click() và End Sub
4. Thêm dòng code sau vào đó
VBA TRONG EXCEL | L p trình c b n trong excel
9
Chú ý: C a s bên trái v i tên là Sheet1, Sheet2 và Sheet3 đ
c g i là Project Explorer.
N u c a s này không hi n ra, các b n ch n View > Project Explorer.
thêm c a s code
sheet đ u tiên, kích vào Sheet1.
5. óng khung Visual Basic Editor
6. Kích vào command button trên sheet c a b n. S th y k t qu nh sau:
Chúc m ng b n đã t o macro trong Excel. B n đ ng quan tâm t i các dòng code v i, vì tôi
s nói trong các bài sau.
1.4 Visual Basic Editor
m Visual Basic Editor, trên th Developer, kích vào Visual Basic
VBA TRONG EXCEL | L p trình c b n trong excel
10
C a s Visual Basic Editor xu t hi n:
2 MsgBox
MsgBox là m t b ng thông báo trong Excel VBA, b n có th s d ng th thông tin cho
ng
i dùng.
t m t command button trong b ng tính và thêm nh ng dòng code sau:
1. Tin nh n đ n
1 MsgBox "This is fun"
K t qu khi b n click vào nút này nh sau:
VBA TRONG EXCEL | L p trình c b n trong excel
11
2. Tin nh n nâng cao h n m t chút
1 MsgBox "Entered value is " & Range("A1").Value
Nh p m t giá tr nào đó vào trong ô A1 và n vào nút thì k t qu nh sau:
Chú ý: Chúng ta s d ng toán t & đ n i chu i string.
3.
b t đ u m t dòng m i, s d ng vbNewLine
1 MsgBox "Line 1" & vbNewLine & "Line 2"
K t qu nh sau:
VBA TRONG EXCEL | L p trình c b n trong excel
12
3 Workbooks và Worksheets
3.1 Cây đ i t
ng
Trong Excel VBA, m t đ i t
bao g m đ i t
v i các đ i t
it
đ it
t
ng có th bao g m đ i t
ng khác, và đ i t
ng đó có th
ng khác, v.v.Vì v y, l p trình Excel VBA s liên quan đ n vi c làm vi c
ng . i u này nghe có v r c r i, nh ng chúng ta s s m hi u rõ thôi.
ng cha c a t t c đ i t
ng Application.
it
ng đó chính là b n thân Excel. Chúng ta có th g i nó là
ng Application bao g m nh ng đ i t
ng khác . Ví d , đ i
ng Workbook (file Excel), có th là b t k workbook nào b n đã tao.
Workbook bao g m nh ng đ i t
đ it
ng khác gi ng nh đ i t
ng Worksheet bao g m đ i t
ng khác, nh đ i t
i t
ng
ng Worksheet. C nh v y
ng Range.
Bài t o Marco đã minh h a cách đ ch y code b ng cách kích vào m t button. Chúng ta
đã s d ng đo n code sau:
1 Range("A1").Value = "Hello"
nh ng th c ch t là nh sau:
1 Application.Workbooks("create-a-macro").Worksheets(1).Range("A1").Value = "Hello"
Chú ý:
it
ng đ
c g i thông qua d u ch m “.”. May m n là chúng ta không ph i s
d ng c dòng code dài nh bên trên, b i vì chúng ta đ t button c a chúng ta trong file
create-a-marco.xls,
trên worksheet đ u tiên.
3.2 Collection
B n chú ý là c Workbooks và Worksheet đ u
d ng s nhi u . ó là b i vì chúng là m t
t p h p (collection). T p h p Workbooks bao g m t t c các đ i t
m . T p h p Worksheets bao g m t t c các đ i t
ng workbook mà đang
ng Worksheet trong m t workbook.
VBA TRONG EXCEL | L p trình c b n trong excel
13
B n có th tr đ n m t đ i t
ng trong m t t p h p, ví d m t đ i t
ng worksheet theo 3
cách:
1. S d ng tên worksheet
1 Worksheets("Sales").Range("A1").Value = "Hello"
2. S d ng ch s (1 là worksheet đ u tiên b t đ u t bên trái)
1 Worksheets(1).Range("A1").Value = "Hello"
3. S d ng CodeName
1 Sheet1.Range("A1").Value = "Hello"
đ xem CodeName c a worksheet, m Visual Basic Editor. Trong Project Explorer, tên
đ u tiên là CodeName. Tên th hai là tên worksheet (Sales)
Chú ý: CodeName gi ng nhau n u b n thay đ i tên worksheet vì th mà đây là cách an
toàn nh t đ tr đ n worksheet.
3.3 Properties và Method
Bây gi chúng ta quan sát m t s property và method c a t p h p workbook và worksheet.
Property là nh ng đ c tr ng cho t p h p, còn method đ
c dùng đ làm đi u gì đó (ví d
con chó có lông màu đen (đó là property), còn s a ho c c n là method).
t m t command button trên b ng tính và thêm nh ng dòng code sau:
VBA TRONG EXCEL | L p trình c b n trong excel
14
1. Method “Add” c a t p h p workbook t o m t workbook m i:
1 Workbooks.Add
Chú ý: Method Add c a worksheet s t o worksheet m i
2. Property “Count” c a t p h p Worksheet đ m s l
workbook
ng worksheets trong m t
1 MsgBox Worksheets.Count
K t qu khi b n kích vào button nh sau:
Chú ý: Property “Count” c a workbook s đ m s workbook đang active.
VBA TRONG EXCEL | L p trình c b n trong excel
15
4 Đ
it
ng Range
ng Range dùng đ “minh h a” cho m t ô ho c nhi u ô (cell) trong worksheet c a
b n, đây là đ i t
ng quan tr ng nh t c a Excel VBA. Bài này s trình bày t ng quan v
property (thu c tính) và method(ph
ng th c) c a đ i t
ng này .
4.1 Ví d v Range
t m t command button trong worksheet c a b n và thêm nh ng dòng code sau:
1 Range("B3").Value = 2
K t qu khi b n kích vào button nh sau:
Code:
1 Range("A1:A4").Value = 5
K t qu :
Code:
1 Range("A1:A2,B3:C4").Value = 10
K t qu :
VBA TRONG EXCEL | L p trình c b n trong excel
16
4.2 Cell
Thay vì s d ng Range, b n có th s d ng Cells. S d ng Cells h u ích khi b n mu n
duy t qua m t chu i các ô (range)
Code:
1 Cells(3, 2).Value = 2
K t qu :
Gi i thích: Excel VBA nh p giá tr 2 vào trong ô là giao c a dòng 3 và c t 2
Code:
1 Range(Cells(1, 1), Cells(4, 1)).Value = 5
K t qu :
VBA TRONG EXCEL | L p trình c b n trong excel
17
4.3 Khai báo đ i t
ng Range
B n có th khai báo m t đ i t
ng Range s d ng t khóa Dim và Set
Code:
1 Dim example As Range
2 Set example = Range("A1:C4")
3
4 example.Value = 8
K t qu :
4.4 Select
M t ph
ng th c quan tr ng c a đ i t
ng Range là ph
ng th c Select. Ph
ng th c này
làm nhi m v ch n m t chu i các ô.
Code:
1 Dim example As Range
2 Set example = Range("A1:C4")
3
4 example.Select
K t qu :
4.5 Rows
VBA TRONG EXCEL | L p trình c b n trong excel
18
Thu c tính Rows đ b n truy xu t vào m t dòng c th c a chu i range
Code:
1 Dim example As Range
2 Set example = Range("A1:C4")
3
4 example.Rows(3).Select
K t qu :
Chú ý:
ng border ch có tính minh h a
4.6 Columns
Thu c tính column đ b n truy xu t đ n m t c t c th .
Code:
1 Dim example As Range
2 Set example = Range("A1:C4")
3
4 example.Columns(2).Select
K t qu :
4.7 Copy/Paste
VBA TRONG EXCEL | L p trình c b n trong excel
19
Ph
ng th c copy/paste đ
c s d ng đ sao chép m t chu i và dán nó vào m t n i nào
đó trên worksheet
Code:
1 Range("A1:A2").Select
2 Selection.Copy
3
4 Range("C3").Select
5 ActiveSheet.Paste
K t qu :
M c dù đi u này đ
c cho phép trong Excel VBA, nh ng t t h n là s d ng code bên d
i
v i cùng m c đích:
1 Range("C3:C4").Value = Range("A1:A2").Value
4.8 Clear
xóa b n i dung c a chu i các ô, b n có th s d ng ph
ng th c ClearContents
1 Range("A1").ClearContents
ho c đ n gi n h n:
1 Range("A1").Value = ""
Chú ý: S d ng ph
ph
ng th c Clear s xóa b c n i dung và đ nh d ng c a chu i . S d ng
ng th c ClearFormats s ch x a b đ nh d ng .
4.9 Count
V i thu c tính count, b n có th đ m s ô, s dòng, s c t c a chu i
VBA TRONG EXCEL | L p trình c b n trong excel
20
Chú ý:
ng border ch mang tính minh h a
Code:
1 Dim example As Range
2 Set example = Range("A1:C4")
3
4 MsgBox example.Count
K t qu :
Code:
1 Dim example As Range
2 Set example = Range("A1:C4")
3
4 MsgBox example.Rows.Count
K t qu :
VBA TRONG EXCEL | L p trình c b n trong excel
21
Chú ý: V i cách t
5
ng t b n có th đ m s c t .
n
t m t command button trong b ng tính c a b n và thêm nh ng dòng code sau.
th c
hi n dòng code thì kích vào button.
5.1 Integer
Bi n Integer đ
c dùng đ l u tr s
1 Dim x As Integer
2x=6
3 Range("A1").Value = x
K t qu :
Gi i thích: Dòng code đ u tiên khai báo m t bi n v i tên x ki u Integer. K ti p, chúng ta
kh i t o x v i giá tr x. Cu i cùng gán giá tr vào ô A1.
5.2 String
Bi n ki u String đ
c s d ng đ l u tr text
Code:
VBA TRONG EXCEL | L p trình c b n trong excel
22
1 Dim book As String
2 book = "bible"
3 Range("A1").Value = book
K t qu :
Gi i thích: Dòng code đ u tiên khai báo m t ki n tên là book ki u String. Ti p theo là
kh i t o bi n book b ng vi c gán giá tr cho nó là “bible”. Luôn luôn s d ng d u nh c đ
t o bi n ki u string. Cu i cùng là gán nó vào ô A1
5.3 Double
M t bi n ki u Double thì đ
c dùng cho nh ng s chính xác h n ki u Integer và có th
l u tr nh ng s th p phân
Code:
1 Dim x As Integer
2 x = 5.5
3 MsgBox "value is " & x
K t qu :
Nh ng đó không ph i là giá tr đúng! ang l nó ph i là 5.5 ch . Cái chúng ta c n là bi n
ki u Double
VBA TRONG EXCEL | L p trình c b n trong excel
23
1 Dim x As Double
2 x = 5.5
3 MsgBox "value is " & x
K t qu :
5.4 Boolean
S d ng bi n ki u Boolean đ gi giá tr True ho c False
Code:
1 Dim continue As Boolean
2 continue = True
3
4 If continue = True Then MsgBox "Boolean variables are cool"
K t qu :
6 C
I T
t m t Command button trong b ng tính c a b n và add nh ng dòng code sau:
1 Dim score As Integer, result As String
2 score = Range("A1").Value
3
VBA TRONG EXCEL | L p trình c b n trong excel
24
4 If score >= 60 Then result = "pass"
5
6 Range("B1").Value = result
Gi i thích: N u score l n h n ho c b ng 60, Excel VBA s tr k t qu là “pass”
K t qu nh sau:
Chú ý: N u score ít h n 60, Excel VBA s đ t m t giá tr tr ng trong ô B1
6.1 Else
t m t command button trong b ng tính và thêm nh ng dòng code sau:
1 Dim score As Integer, result As String
2 score = Range("A1").Value
3
4 If score >= 60 Then
5
result = "pass"
6 Else
7
result = "fail"
8 End If
9
10 Range("B1").Value = result
K t qu :
VBA TRONG EXCEL | L p trình c b n trong excel