1. Trang chủ
  2. » Công Nghệ Thông Tin

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

58 969 0

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 58
Dung lượng 2,17 MB

Nội dung

Hướng dẫn sử dụng VBA trong Excel. VBA là ngôn ngữ lập trình trong Excel: VBA Visual Basic for Application. Ta sử dụng ngôn ngữ lập trình VBA để viết ra các macro. Macro là các chương trình hoàn chỉnh thực hiện tự động các lệnh mà bạn đã viết ra cho nó.

Trang 1

8/18/2016 VBA TRONG EXCEL

L p trình c b n trong excel

PH M TU N MINH

Trang 2

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 c bi t v i

nh ng kh i ngành kinh t và k thu t Nó giúp công vi c đ 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 : dev4contact@gmail.com

- t câu h i trên trang web: http://askme.dev4lifes.net

Chân thành c m n!

Trang 3

M C L 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 ng 12

3.2 Collection 12

3.3 Properties và Method 13

4 i t ng Range 15

4.1 Ví d v Range 15

4.2 Cell 16

4.3 Khai báo đ i t ng Range 17

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

5 Bi n 21

5.1 Integer 21

5.2 String 21

Trang 4

5.3 Double 22

5.4 Boolean 23

6 Câu l nh If Then 23

6.1 Else 24

7 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

Trang 5

11.1 S ki n Workbook Open 37

11.2 S ki n Worksheet Change 38

12 M ng 40

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

14 i t 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

Trang 6

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

Trang 7

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

Trang 8

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

Trang 9

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 đó

Trang 10

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

Trang 11

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"

vào nút này nh sau:

Trang 12

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:

Trang 13

3 Workbooks và Worksheets

3.1 Cây đ i t ng

Trong Excel VBA, m t đ i t ng có th bao g m đ i t ng khác, và đ i t ng đó có th

bao g m đ i t 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

v i các đ i t 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

i t ng cha c a t t c đ i t ng đó chính là b n thân Excel Chúng ta có th g i nó là

đ i t ng Application i t ng Application bao g m nh ng đ i t ng khác Ví d , đ i

t ng Workbook (file Excel), có th là b t k workbook nào b n đã tao i t ng

Workbook bao g m nh ng đ i t ng khác gi ng nh đ i t ng Worksheet C nh v y

đ i t ng Worksheet bao g m đ i t ng khác, nh đ i t 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ú ý: i t 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 ng workbook mà đang

m T p h p Worksheets bao g m t t c các đ i t ng Worksheet trong m t workbook

Trang 14

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

đ 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:

Trang 15

1 Method “Add” c a t p h p workbook t o m t workbook m i:

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 ng worksheets trong m t

workbook

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

Trang 16

4 Đ ng Range

i t 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

Trang 17

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)

Trang 18

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

Dim example As Range

Set example = Range("A1:C4")

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 ô

Dim example As Range

Set example = Range("A1:C4")

example.Select

K t qu :

4.5 Rows

Trang 19

Thu c tính Rows đ b n truy xu t vào m t dòng c th c a chu i range

Dim example As Range

Set example = Range("A1:C4")

Dim example As Range

Set example = Range("A1:C4")

example.Columns(2).Select

K t qu :

4.7 Copy/Paste

Trang 20

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

Trang 21

Chú ý: ng border ch mang tính minh h a

Dim example As Range

Set example = Range("A1:C4")

Dim example As Range

Set example = Range("A1:C4")

MsgBox example.Rows.Count

K t qu :

Trang 22

Chú ý: V i cách t ng t b n có th đ m s c t

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

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:

Trang 23

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 đ

Trang 26

7 Vòng l p

Vòng l p là m t trong nh ng k thu t l p trình m nh m nh t M t vòng l p trong Excel

VBA cho phép b n l p qua l t l t các ô trong chu i ch v i m t vài dòng code

7.1 Vòng l p đ n

B n có th s d ng vòng l p đ n đ l p qua m t chu i m t chi u các ô trong Excel

t m t command button trong b ng tính và thêm nh ng dòng code sau:

VBA s nh p giá tr 100 vào ô giao gi a dòng 1 và c t 1 Khi Excel VBA ch y t i dòng

Next i, nó t ng i thêm 1 đ n v và tr l i dòng code For For i=2, Excel VBA s nh p giá

tr 100 vào giao gi a dòng 2 và c t 1, v v

7.2 Vòng l p đôi

B n s d ng m t vòng l p đôi đ l p qua m ng 2 chi u (Range g m c dòng và c t)

t m t command button vào b ng tính và thêm các dòng code sau:

Trang 27

Gi i thích: For i = 1 và j = 1, Excel VBA nh p giá tr 100 vào ô giao gi a dòng 1 và c t

1 Khi Excel VBA ch y t i dòng Next j, nó t ng j thêm 1 và nh y tr l i dòng For j For i

= 1 và j = 2, Excel VBA s nh p giá tr 100 vào giao gi a dòng 1 và c t 2 C ti p t c nh

v y cho t i khi j > 2, thì vòng l p s nh y t i dòng Next i và t ng i thêm m t và ti p t c

Trang 28

B n t suy lu n cách mà nó làm vi c nhé

7.4 Vòng l p Do While

Bên c nh vòng l p For Next, có nh ng vòng l p khác trong Excel VBA Ví d , vòng l p

Do While Code đ t gi a Do While và Loop s l p l i mi n là ph n đi u ki n sau Do While

1 và t ng i thêm 1 Trong Excel VBA, d u “=” không có ngh a là b ng Vì th i = i + 1

ngh a là i s tr thành i + 1 Vì th , l y giá tr hi n t i c a i và c ng thêm 1 Ví d , n u i =

1, i s thành 1 + 1 = 2 K t qu , giá tr 20 s đ t trong c t A 5 lân

2 Nh p m t vài s trong c t A

Trang 29

3 t m t command button trong b ng tính và thêm dòng code sau:

Do While Cells(i, 1).Value <> ""

Cells(i, 2).Value = Cells(i, 1).Value + 10

Trang 30

K t qu :

2 Kích OK

Bi n x ch a đ c đ nh ngh a B i vì chúng ta s d ng câu l nh Option Explicit đ u đo n

code, chúng ta ph i khai báo t t c các bi n Excel VBA đã bôi màu x thành màu xanh đ

ch d n l i

3 Trong Visual Basic Editor, kích Reset đ d ng debugger

4 S a l i b ng cách thêm dòng code sau

1 Dim x As Integer

Trang 31

Có th n u b n đã quen v i l p trình thì đã nghe th y t debug, k thu t này giúp b n ch y

qua t ng dòng code đ xem k t qu

5 Trong Visual Basic Editor, đ t con tr tr c Private và n F8

Dòng đ u tiên s chuy n sang màu vàng

6 n F8 3 l n

Trang 32

L i sau s xu t hi n

i t ng Range có m t property g i là Value Value không đ c vi t đúng đây Debug

là m t cách tuy t v i đ tìm l i, ngoài ra giúp b n hi u code h n

Trang 33

Dim text As String

text = "example text"

Trang 35

Bài này s h c cách làm vi c v i Date và Time trong Excel VBA

t m t command button trong bang tính và add nh ng dòng code sau

10.1 Year, Month, Day c a Date

o n code sau s l y v n m (year) c a Date khai báo date, s d ng câu l nh Dim

kh i t o date, s d ng ch c n ng DateValue

Code:

Trang 36

c ng m t s ngày vào date, s d ng ph ng th c DateAdd Ph ng th c này có 3 đ i

s “d” đ i s đ u tiên đ c ng ngày 3 đ i s th 2 đ c ng 3 ngày i s

th 3 chính là bi n date đ c ng ngày vào

Chú ý: Thay đ i “d” thành “m” đ công tháng vào date B n có th s d ng phím F1 đ

tìm hi u thêm Date trong đ nh d ng US

10.3 Date và Time hi n t i

l y Date và time hi n t i s d ng hàm Now

Trang 38

1 MsgBox TimeValue("9:20:01 am")

Code đã thêm vào s d ng Workbook open s th c hi n khi b n m workbook

1 M Visual Basic Editor

2 Kích đúp vào ThisWorkbook trong Project Explorer

Trang 39

3 Ch n Workbook t danh sách x xu ng bên trái Ch n Open t danh sách x

xu ng bên ph i

4 Thêm dòng code sau vào s ki n Workbook Open

1 MsgBox "Good Morning"

5 L u l i, đóng và m l i file Excel

K t qu :

11.2 S ki n Worksheet Change

Code s th c hi n khi b n thay đ i m t cell nào đó trong b ng tính

1 M Visual Basic Editor

2 Kích đúp vào m t sheet (ví d Sheet1) trong Project Explorer

Trang 40

3 Ch n Worksheet và Change nh hình d i:

4 S ki n Worksheet Change s l ng nghe t t c nh ng thay đ i trong Sheet1 Chúng ta

ch mu n Excel VBA làm m t đi u gì đó n u th c hi n thay đ i ô B2 Thêm nh ng dòng

5 Chúng ta mu n Excel VBA hi n th m t MsgBox n u ng i dùng nh p giá tr l n h n

80 Thêm dòng code sau:

1 If Target.Value > 80 Then MsgBox "Goal Completed"

6 Trong Sheet1, nh p m t s l n h n 80 trong ô B2

K t qu :

Trang 41

M

M t Array là m t t p h p các bi n Trong Excel VBA, b n có th g i đ n m t ph n t c a

m ng s d ng tên array kèm theo ch s

Films(3) = "Star Wars"

Films(4) = "The Godfather"

Films(5) = "Pulp Fiction"

MsgBox Films(4)

K t qu khi b n kích vào command button:

Trang 42

Gi i thích: Dòng code đ u tiên khai báo m t m ng string v i tên là Films M ng bao g m

5 ph n t K đ n chúng ta kh i t o m i ph n t c a m ng Cu i cùng, chúng ta hi n th

ph n t th t s d ng MsgBox

12.2 M ng hai chi u

t o m ng hai chi u, th c hi n các b c sau L n này, chúng ta s đ c tên c a b ng tính

t m t command button trong b ng tính và thêm nh ng dòng code sau:

Dim Films(1 To 5, 1 To 2) As String

Dim i As Integer, j As Integer

Trang 43

Gi i thích: Dòng code đ u tiên khai báo m t m ng String v i tên Films M ng có hai chi u

Nó bao g m 5 dòng và 2 c t (dòng tr c, c t sau nhé) Hai bi n lo i Integer đ c dùng

cho vòng l p đ kh i t o giá tr trong m ng Cu i cùng chúng ta hi n th ph n t giao gi a

N u b n mu n Excel VBA đ th c hi n m t công vi c mà tr v m t k t qu , b n có th

s d ng m t function t m t function trong m t module (trong Visual Basic Editor,

kích vào Insert > Module) Ví d , function v i tên là Area

s d ng tên c a function (Area) trong code c a b n đ ch d n lo i k t qu mà b n mu n

tr v

Bây gi b n có th s d ng function này t b t k đâu trong code c a b n b ng cách s

d ng tên c a function và nh p đ i s cho nó

t m t command button trong b ng tính và thêm dòng code sau

Ngày đăng: 05/10/2016, 09:28

TỪ KHÓA LIÊN QUAN

w