bài 1: gi i thi u - nmlt.files. · pdf filelập trình vba trong excel...

Download Bài 1: Gi i Thi u - nmlt.files. · PDF fileLập trình VBA trong Excel Bài 1: Giới Thiệu 1) Lập trình là gì? Lập trình là việc chuyển đổi lời giải bằng

If you can't read please download the document

Upload: trinhhuong

Post on 07-Feb-2018

239 views

Category:

Documents


13 download

TRANSCRIPT

  • Lp trnh VBA trong Excel

    Bi 1: Gii Thiu 1) Lp trnh l g?

    Lp trnh l vic chuyn i li gii bng ngn ng t nhin ca 1 bi ton sang ngn ng my tnh. Kt qu l ta s c 1 chng trnh chy trn my tnh v gii quyt c bi ton .

    2) Ti sao phi lp trnh?

    Li gii ca cc bi ton thc t c trnh by di dng ngn ng t nhin (ngn ng giao tip trong i sng hng ngy nh ting Vit, Anh, Php, ).

    My tnh cng c ngn ng ring ca n. Nhng ngn ng trong my tnh th rt n s. V d: cng 2 s, so snh 2 s,

    Do ta cn chuyn i li gii ca bi ton dng ngn ng t nhin sang ngn ng my tnh. Qu trnh chuyn i gi l lp trnh (hay m ha).

    3) Cc bc cn thit khi lp trnh

    gii quyt 1 bi ton trn my tnh (lp trnh), ta cn thc hin nhng bc sau:

    Bc 1: Xc nh v hiu r bi ton.

    Bc 2: Tm li gii cho bi ton dng ngn ng t nhin.

    Bc 3: Lp trnh (programming).

    V d: Lp trnh gii bi ton phng trnh bc 2 nh sau: Ax2 + Bx + C = 0.

    Bc 1: bi ton y l phng trnh bc 2 c dng Ax2 + Bx + C = 0. Vic hiu r bi ton y l A, B, v C cc hng s v A 0; x l n s ca phng trnh.

    Bc 2: nh ta bit li gii ca phng trnh bc 2 c biu din di dng ngn ng t nhin thng qua cc bc nh sau:

    Tnh = B2 4AC

    Nu 0 th phng trnh c 2 nghim l A2

    Bx 2,1

    Nu < 0 th phng trnh v nghim

    Bc 3: chn ngn ng lp trnh

    4) Mt s cch thc biu din li gii ca bi ton

    Li gii ca 1 bi ton thng c gi l thut gii (thut ton, algorithm). Thng thng thut gii ca 1 bi ton thng c biu din dng lu (scheme) hay m gi (pseudo-code).

    Hnh di l cch thc biu din thut ton gii phng trnh bc 2 dng lu

    Li gii ca bi ton dng ngn ng t nhin

    Lp trnh Li gii ca bi ton dng ngn ng my tnh

  • Lp trnh VBA trong Excel

    on m (code) di y l cch thc biu din thut ton gii phng trnh bc 2 bng m gi

    = B2 4AC

    If 0 Then A2

    Bx 2,1

    If < 0 Then phng trnh v nghim

    5) Ngn ng lp trnh (Programming Languages)

    Ngn ng c dng cung cp cu lnh cho my tnh. C rt nhiu loi ngn ng, di y lit k 1 s loi:

    + Ngn ng cp thp: Assembly. + Ngn ng cho mc ch tng qut: PL/I, C, C++, Pascal, Modula-2, Ada, Java, C#, Visual Basic.

    + Ngn ng cho ton, khoa hc, k thut: Fortran, Maple, Matlab, Mathematica. + Ngn ng cho tin trnh kinh doanh: Cobol, RPG.

    + Ngn ng cho tr tu nhn to: Prolog, Lisp. + Ngn ng x l chui, ngn ng script: Perl, Python, VBScript, JavaScript.

    6) Visual Basic for Applications (VBA)

    + VBA l phn m rng ca ngn ng Visual Basic c dng nng cao cc tnh nng trong Word, Excel, Access. + m ca s VBA trong Excel, nhn phm Alt + F11. + Thm 1 module vo trong Workbook.

    Bc 1: Nu cha trong ca s VBA th nhn Alt + F11 Bc 2: Click vo tn workbook. Click menu Insert ri chn Module (Module l 1 n v cha m lnh).

    + Thm 1 hm vo trong 1 module

    Bc 1: M module Bc 2: Click menu Insert ri chn Procedure

    = B2 4AC

    0?

    v nghim Sai

    ng A2

    Bx 2,1

  • Lp trnh VBA trong Excel

    Bc 3: t tn hm ti Name; ri chn Function.

    Khi trn ca s VBA s xut hin nhng dng sau:

    Public Function Hello()

    End Function

    Hm l 1 tp hp cc cu lnh thc hin 1 chc nng no .

    + V d: Vit 1 hm n gin trn VBA. Bc 1: M ca s VBA.

    Bc 2: Thm 1 hm c tn l Hello.

    Bc 3: G vo dng lnh sau:

    MsgBox ("Chao ban, day l chuong trinh VBA dau tien cua toi!!!") Khi trn ca s VBA, bn s thy kt qu nh sau:

    Public Function Hello()

    MsgBox ("Chao ban, day l chuong trinh VBA dau tien cua toi!!!") End Function

    Bc 4: Kim tra (test) chc nng ca hm Hello.

    Quay li Excel, ti 1 bt k, g vo cng thc sau: =Hello()

    Ch : lu workbook c cha cc hm vit bng VBA, ta phi dng loi file Excel Macro-Enabled Workbook (*.xlsm)

  • Lp trnh VBA trong Excel

    Bi 2: Bin Kiu d liu Bin (variable) l 1 vng b nh dng lu tr 1 gi tr c tnh tm thi. Trc khi s dng 1 bin, ta phi khai bo bin. 1) Cch khai bo bin

    Dim As [, As ]

    - tn bin : phi bt u bng 1 k t, di ti a 255 k t, khng c c khong trng v du chm.

    - kiu (data type) : c nhng kiu sau:

    Loi Tn kiu S byte Min gi tr

    S nguyn

    Byte 1 0 to 255

    Integer 2 [32,768, 32,767]

    Long 4 [2,147,483,648, 2,147,483,647]

    S thc

    Single 4

    S m:

    3.402823E38 to 1.401298E45

    S dng:

    1.401298E45 to 3.402823E38

    Double 8

    S m:

    1.79769313486232E308 .. 4.94065645841247E324

    S dng:

    4.94065645841247E324 .. 1.79769313486232E308

    Logic Boolean 2 True, False

    Ngy, gi Date 8 01/01/100 to 31/12/9999

    Chui String T 0 n khong 2 t k t

    1 k t Char 2

    V d 1: Dim diem As Single, phai As Boolean, ngay as Date

    Dim ten As String Ch : Bt ch bt buc phi khai bo bin trc khi dng: ti ca s VBA, click menu Tools Options, ri chn Require Variable Declaration.

  • Lp trnh VBA trong Excel 2) Cc php ton

    - Cng, tr, nhn, chia : +, , *, /

    - Ly tha : ^ VD: 6^2 36

    - Tr v s d ca php chia: mod VD: 14 mod 3 2

    - Tr v thng s ca php chia: \ VD: 14 \ 3 4

    - Ni nhiu chui: & VD: abc & 456 & xyz abc456xyz

    3) Php gn

    Dng thay i gi tr ca 1 bin. C php nh sau: = V d 2:

    ten = Visual Basic

    phai = True

    ngay = #10/18/2011#

    diem = 6.5

    diem = diem + 0.5

    x = y^2 + (z mod y)

    V d 3: vit hm tr v thng s ca 1 php chia

    Public Function ThuongSo(SoBiChia As Integer, SoChia As Integer) ThuongSo = SoBiChia \ SoChia

    End Function

    Ch : - Khai bo tham s (argument / parameter): As

    - Tham s c dng nh bin, ngha l c th p dng cc php ton, php gn, - Hm lun tr v 1 gi tr, c php: =

    Bi tp 1) Vit hm tr v s d ca 1 php chia. 2) Vit hm nhn vo 1 s nguyn c 3 ch s, tnh tng v tch ca 3 ch s y.

    3) Vit hm nhn vo 1 s tin nguyn, i s tin y thnh t 500, 20, v d bao nhiu. 4) Vit hm nhn vo 1 thi gian tnh theo giy, i sang dng gi:pht:giy.

    (Gi : cc bi 2, 3, v 4 ta tr v 1 chui)

  • Lp trnh VBA trong Excel

    Bi 3: Lnh iu kin (Conditional Statements) Lnh iu kin cho php CPU thc thi 1 tp hp lnh trong nhng iu kin c nh trc.

    1) iu kin (Condition / Criterion) - iu kin l nhng biu thc so snh v lun tr v True hoc False.

    1.1) n

    - php ton so snh: >, >=, = #06/14/89#))

    2) Lnh If 2.1) Dng 1

    If < iu kin A> Then

    < cc lnh A> End If

    2.2) Dng 2

    If < iu kin A > Then

    < cc lnh if >

    Else < cc lnh else > End If

    ngha: thc thi cc lnh if khi iu kin A ng (True); ngc li thc thi cc lnh else.

    iu kin A T F

    cc lnh else cc lnh if

    ngha: thc thi cc lnh A khi iu kin A ng (True) T

    iu kin A

    cc lnh A

    F

  • Lp trnh VBA trong Excel 2.3) Dng 3

    If < k1 > Then < cc lnh 1 >

    Elseif < k2 > Then < cc lnh 2 >

    Elseif < k3 > Then

    < cc lnh 3 >

    Else < cc lnh else>

    End If ngha: thc thi cc lnh 1 khi k1 ng (True); ngc li thc thi cc lnh 2 khi k2 ng; ; nu tt c cc iu kin u sai (False) th cc lnh else c thc thi.

    V d 3: vit hm nhn vo 1 s nguyn, cho bit s chn hay l. Public Function ChanLe(So As Integer)

    If (So mod 2) = 0 then ChanLe = S chn

    Else ChanLe = S l

    End If

    End Function

    V d 4: vit hm nhn vo 1 s, cho bit s m, dng, hay bng 0. Public Function Dau(So As Double)

    If (So > 0) then Dau = S dng

    Elseif (So < 0) then Dau = S m

    Else Dau = S 0

    End If

    End Function

    k1 cc lnh 1 T

    k2 cc lnh 2 T

    k3 cc lnh 3 T

    F

    F

    cc lnh else

    F

  • Lp trnh VBA trong Excel 3) Lnh Select Case

    Select Case

    Case n1

    < cc lnh n1 >

    Case n2

    < cc lnh n2 >

    Case Else

    < cc lnh else > End Select

    - n1, n2, : l nhng tp hp gi tr, c th c vit di nhng dng sau:

    + cc gi tr ri rc:

    C php: gi tr 1, gi tr 2,

    V d 5: 1, 4, 7

    ab, cde

    #03/15/89#, #04/16/99#

    + cc gi tr lin tc:

    C php: gi tr 1 To gi tr 2

    V d 6: 1 to 10 [1, 10]

    A to Z

    Is > 8 (8, +)

    Is

  • Lp trnh VBA trong Excel Public Function SoNgay(Thang As Byte, Nam As Integer)

    Dim sn As Byte, tmp As Integer Select Case Thang

    Case 1, 3, 5, 7, 8, 10, 12: sn = 31 Case 4, 6, 9, 11: sn = 30

    Case 2 tmp = Nam Mod 100

    If tmp = 0 Then tmp = Nam \ 100

    If (tmp Mod 4) = 0 Then sn = 29 Else sn = 28

    End Select SoNgay = sn

    End Function Bi tp 1) Vit li v d 3 v 4 bng cch dng SELECT. 2) Vit li v d 7 bng cch dng IF.

    3) Vit hm nhn vo 3 s. Cho bit s ln nht.

    4) Vit hm nhn vo 1 s nguyn c 3 ch s, cho bit ch s nh nht.

    5) Vit hm nhn vo 1 ngy. Cho bit th trong tun. 6) Vit hm nhn vo 1 nm. Cho bit nm m lch.

    (Hng dn: nm m lch gm can v chi. Can: Gip-4, t-5, Bnh-6, inh-7, Mu-8, K-9, Canh-0, Tn-1, Nhm-2, Qu-3.

    Chi: T-4, Su-5, Dn-6, Mo-7, Thn-8, T-9, Ng-10, Mi-11, Thn-0, Du-1, Tut-2, Hi-3.) 7) Vit hm nhn vo 2 s A v B. Gii phng trnh Ax + B = 0.

    (Hng dn: nu (A = 0) v (B = 0) th phng trnh c v s nghim.

    Nu (A = 0) v (B 0) th phng trnh v nghim.

    Nu (A 0) th phng trnh c nghim x = -B/A.) 8) Vit hm nhn vo 3 s A, B v C. Gii phng trnh Ax2 + Bx + C = 0.

    (Hng dn: nu (A = 0) th gii phng trnh Bx + C = 0.

    Nu (A 0)

    + Tnh = B2 4AC

    + Nu < 0 th v nghim

    + Nu 0 th c 2 nghim xc nh bi cng thc A

    B2

    )

  • Lp trnh VBA trong Excel

    Bi 4: Lnh vng lp (Loop Statements) Lnh vng lp cho php thc thi cc lnh nhiu ln.

    1) FOR For = To Step

    < cc lnh> Next V d 1: For i = 1 to 5 step 1

    s = s + i next i

    For i = 5 to 1 step 1