Tải bản đầy đủ (.pdf) (58 trang)

Hướng dẫn sử dụng VBA trong Excel

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (2.17 MB, 58 trang )

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


×