Professional Documents
Culture Documents
K TON EXCEL
GV: Nguyen Ngoc Minh Email: minhhoangtell@yahoo.com
Ng.Ng.Minh
NI DUNG
1.
2.
To bng, dng hm, cc chc nng macro, validation, advanced filter, lp c phiu thu-chi, phiu nhp xut, th kho, bo co ti chnh tng t file K ton Excel 2011: 2 im Lm c Form nh form ng nhp h thng, cy th mc, form nhp liu v hiu v VBA (phiu nhp xut, thu chi): 3 im
3. 4.
To c Ribon ngi dng cho file s dng nh cc Tab, Group, Control : 3 im C hay, sng to: 2 im
Ng.Ng.Minh
RIBON
GV: Nguyen Ngoc Minh Email: minhhoangtell@yahoo.com
Ng.Ng.Minh
Nu bn mun thay i giao din Ribbon trong Excel 2010, bn phi thm RibbonX (xml) vo file customUI14.xml bn trong tp tin Excel ca bn.
Ng.Ng.Minh
Open: M file Excel m bn mun chnh sa (thay i giao din Ribbon cho tp tin ny) Save: Lu RibbonX trong tp tin m bn m trong trnh son tho giao din ngi dng (Khng c th save khi tp tin c m ra trong Excel)
Ng.Ng.Minh
Ng.Ng.Minh
3. M Minh_Ribon.xlsm trong trnh son tho giao din ngi dng ty chnh
4. Nhp chut phi vo tn tp tin trong trnh son tho giao din ngi dng ty chnh hoc s dng menu Insert 5. Chn "Office 2010 Custom UI Part" to ra cc tp tin customUI.xml 6. Dn RibbonX di y trong ca s bn phi <?xml version="1.0" encoding="UTF-8" standalone="yes"?> <customUI onLoad="RibbonOnLoad" xmlns="http://schemas.microsoft.com/office/2009/07/customui"> <ribbon startFromScratch="true"> Ng.Ng.Minh
Ng.Ng.Minh
V khi vo Ribon Gioi thieu, nhn Button Khoa KT-KT, bn s thy macro c thc thi nh hnh bn phi.
Ng.Ng.Minh
Nn bn cn lm thm cc bc sau:
1. M trnh son tho giao din ngi dng ty chnh m file Minh_Ribon.xlsm v dng bng m TCVN3 (ABC) hoc VNI Windows a on m vo.
Ng.Ng.Minh
Ng.Ng.Minh
2. M tp tin Minh_Ribon.xlsm trong trnh son tho giao din ngi dng ty chnh
3. Click chut phi vo customUI14.xml, chn Insert Icons (hoc vo menu Insert chn Icons) chn cc file hnh nh ca bn vo s thy n ngay di customUI14.xml. Nu khng thy th bn hy nhn vo nt + ngay trc customUI14.xml. 4. Nu file nh bn l logo_khoa th on m s l image="logo_khoa" (ch l image ch khng phi l imageMso nh v l icon ca Microsoft)
Thc hin xong cc cng vic trn. Nu m file Minh_Ribon.xlsm m bn thy kt qu nh trn l bn thnh cng bc u.
Ng.Ng.Minh
VBA EXCEL
GV: Nguyen Ngoc Minh Email: minhhoangtell@yahoo.com
Ng.Ng.Minh
VBA EXCEL
VBA (Visual Basic for Application) l ngn ng c Microsoft pht trin dnh ring cho cc ng dng thuc b Office vi mc ch xy dng cc ng dng phc tp. VBA trong MS Excel l mt phn trong . VBA s dng ngn ng lp trnh Visual Basic, mt ngn ng lp trnh tng i d s dng v ph bin nht th gii.
Cu trc ca mt d n VBA:
M-un chun (Module): l ni cha cc m lnh khai bo, cc chng trnh con (hm v th tc) M-un lp (Class Module): l ni cha nh ngha cho cc lp ca d n UserForm: l giao din dng hp thoi gip cho vic giao tip gia ngi s dng v chng trnh c thun tin. M mt d n VBA: Cho hin th Ribon Developer (Vo File/Option/Customize ribon -> chn Maintab -> check vo Developer). Chn Tab Developer/Visual Basic (hoc nhn Alt+F11)
Ng.Ng.Minh
VBA EXCEL
Ca s VBA:
Ng.Ng.Minh
VBA EXCEL
1. Thanh trnh n (Menu bar):
Cha tt c cc la chn cn thit thao tc vi VBA:
Ng.Ng.Minh
VBA EXCEL
5. Ca s i tng trc quan (Visual Object Window):
Cho php ngi dng thao tc trn cc iu khin mt cch d dng v thun tin
Ng.Ng.Minh
VBA EXCEL
Sub - Function :
VBA ch yu dng to cc Sub (th tc) hay cc Function (hm). S khc bit gia Sub v Function l : Sub thi hnh mt khi lnh no v khng c gi tr tr v v ch c th gi Sub t mt Sub hay Function khc. Function cng thi hnh mt khi lnh nhng n c gi tr tr v v c th gi Function c Sub, Function khc hay gi trong Form, Macro.
Ng.Ng.Minh
VBA EXCEL
Public - Private :
Public: khi vit hm, th tc nu ta khai bo l Public th n s c th c s dng trong cc module, class khc, tm li l c th s dng mi ni. Private: ch c th s dng trong phm vi module, class hin hnh Nu khng ch r l Public hay Private th kiu mc nh l Public
Module Class:
Cc on code ta vit trong Form gi l Class. Cn cc on code ta vit trong th Module gi l Module im khc nhau c bn ca Module v Class l : Trong Module nu ta khai bo hm, th tc l Public th ta c th s dng tn hm, th tc mi ni, cn khi ta mun tham chiu n mt hm, th tc c khai bo Public trong Class th ta phi s dng phng thc: Tn Form.Tn hm, th tc
Ng.Ng.Minh
VBA EXCEL
Cc kiu d liu trong VBA :
Kiu d liu Byte Integer Long Single Double Boolean 1 byte 2 bytes 4 bytes 4 bytes 8 bytes 1 byte Kch thc 0 > 255 -32,768 > 32,767 -214,763,748 > 214,763,747 - 3,4 x 1038 > 3,4 x 1038 (cha c 7 s l) -1,97 x 10308 > 1,97 x 10308(cha c 14 s l) -1/ 0 hoc True/ False (tng ng kiu Yes/ No trong Table) 165.400 k t -922,3373,203,685,479 > 922,3373,203,685,477 1/1/100 > 31/12/9999 Kiu ny do ngi dng nh ngha Vng gi tr
String(variable length) 10 bytes + string length 0 231 k t String(fixed length) Currency Date Kiu ngi dng Length of string 8 bytes 8 bytes x
Ng.Ng.Minh
VBA EXCEL
Khai bo bin:
Dim <Tn bin> As <Kiu bin> Vd: Dim a As Integer => Tc khai bo bin a l kiu s nguyn
Ng.Ng.Minh
VBA EXCEL
Phng php quy chiu n d liu trong Excel: - n 1 sheet
i n sheet th N: SheetN, Sheets(N), WorkSheetN, WorkSheets(N) i n sheet c tn l M: Sheets(M), WorkSheets(M)
- n 1 cell: SheetM.Cells(hng, ct) => i n trong sheet c tn SheetM WorkSheets(N).Cells(hng, ct) => i n trong sheet th N -Thm 1 dng trong sheet: SheetM.Rows(i).Insert => Chn thm 1 dng v tr hng i
Ng.Ng.Minh
VBA EXCEL
-Thm 1 ct trong sheet:
SheetM.Columns(i).Insert => Chn thm 1 ct v tr hng i
Khai bo hm:
Function<Tn hm>([Tn bin] As [Kiu bin]) - Cc khai bo bin cc b - Cc lnh ca hm End Function
Ng.Ng.Minh
VBA EXCEL
Khai bo th tc:
Sub<Tn th tc>([Danh sch bin]) - Cc khai bo bin cc b - Cc lnh ca hm End Sub V d: To hm tnh giai tha Function MGT(n As Byte) As Long Dim i As Byte MGT = 1 For i = 1 To n MGT = MGT * i Next i End Function BT: Lp hm tnh Xn
Ng.Ng.Minh
VBA EXCEL
Cc cu trc iu khin:
Cu trc tun t: C dng: - Cu lnh 1 - Cu lnh 2
If < iu kin > then Cc cu lnh End If Cu trc phn nhnh: If <iu kin> Then Cc cu lnh nu iu kin ng Else Cc cu lnh nu iu kin sai End If
Ng.Ng.Minh
VBA EXCEL
Cu trc la chn Select Case : Select Case <Biu thc kim tra> Case <Tha mn gi tr 1> [Cc lnh nu kim tra tha mn gi tr 1] Case <Tha mn gi tr 2> [Cc lnh nu kim tra tha mn gi tr 2] . Case Else [Cc lnh nu kim tra khng tha mn cc gi tr trn] End Select Vng lp While...Wend: Vng lp s thc lnh "nhm_lnh" nu "iu_kin" vn cn ng. While iu_kin nhm_lnh Wend
Ng.Ng.Minh
VBA EXCEL
V d: Tnh tng 100 s u tin: Dim i, N, S As Integer N = 100 S=0 i=1 While i < N S=S+i i=i+1 Wend MsgBox "Tong cua 50 so tu nhien dau tien la: " & S
Ng.Ng.Minh
VBA EXCEL
Cu trc Do While Loop: Vng lp thc hin cho n khi no iu kin vn cn ng. Do While <iu kin> [Cc lnh nu iu kin ng] Exit Do Loop Vd: Hin ln 10 dng Dim i As Byte, MString As String i=1 Do While i <= 10 MString = MString & "Dong: " & i & vbNewLine i=i+1 Loop MsgBox MString
Ng.Ng.Minh
VBA EXCEL
Cu trc Do Until Loop: Vng lp thc hin cho n khi no gp iu kin ng. Do Until <iu kin> [Cc lnh nu iu kin khng tha mn] Exit Do Loop Cu trc Do Loop While: Tng t Do While Loop, nhng c th khng thc hin ln no. Do [Cc lnh] Exit Do Loop While <iu kin> Cu trc Do Loop Until: Ngc li vng lp Do Loop While Do [Cc lnh] Exit Do Loop Until <iu kin>
Ng.Ng.Minh
VBA EXCEL
V d: Tnh tng cc s l t 1 n 100 Sub MCongsole() Dim i As Integer, Ketqua As Integer i=1 Do Ketqua = Ketqua + i i=i+2 Loop Until i > 100 ActiveSheet.Range("A1") = Ketqua End Sub
Ng.Ng.Minh
VBA EXCEL
Cu trc lp xc nh: For For <Bin>=<Gi tr u> To <Gi tr cui> [Step<bc>] [Cc lnh] Exit For Next <Bin> V d: S dng vng lp For, tnh tng 100 s t nhin u tin Sub TinhTong() Dim i, N, S as Integer N=100 S=0 i=1 For i=1 to N Step 1 S= S+i Next i MsgBox Tng 100 s t nhin u tin l: & S End Sub Ng.Ng.Minh
TO FORM
FORM
GV: Nguyen Ngoc Minh Email: minhhoangtell@yahoo.com
Ng.Ng.Minh
TO FORM
Phn ny hng dn bn to mt Form ngi dng trong Excel
V d chng ta s Userform nh sau:
Ng.Ng.Minh
TO FORM
Cch to Userform
- Cho hin th Ribon Developer (Vo File/Option/Customize ribon -> chn Maintab -> check vo Developer).
Ng.Ng.Minh
TO FORM
Gii thiu v hp thoi Toolbox:
Label - Nhn Textboxes - Hp vn bn Listbox Hp danh sch Combobox Hp chn Checkbox - Hp kim Option button - Nt la chn Frames - Khung Command button Nt lnh
Ng.Ng.Minh
TO FORM
Thay i tn v thuc tnh: Nhn chut phi , sau chn vo Properties thc hin
Label (Nhn) : Cc ch nh i hc k ton 4, Kho st ngh nghip, h tn l Label
Chn ch A trn hp Toolbox, sau vch 1 ng trong form, g ch vo, v nh dng li bng cch: Chn label mun nh dng, nhn chut phi, sau chn vo Properties thc hin
Ng.Ng.Minh
TO FORM
Mt s thuc tnh chnh:
Name tn
Caption: th hin ln
Backcolor: mu nn BackStyle: kiu nn Enabled: C th thc hin Font: Kiu ch Forecolor: Mu ch Picture: Chn nh nn Visible: hin ln
Ng.Ng.Minh
TO FORM
Texbox: Chn k hiu abl
Mt s thuc tnh:
ControlSoure: D liu a vo
ControlTiptext: Hng dn hin ln TextAlign: Canh on text Locked: Kha ScrollBars: C cho thanh cun hay khng (trng hp ni dung qu di). WordWrap: C cho php ch t ng xung dng khng.
Ng.Ng.Minh
TO FORM
Image: Hnh chn l hiu
Mt s thuc tnh:
PictureSizeMode: Chn c hnh
SpecialEffect: Chn hiu ng c bit
ComboBox: Hp chn
Mt s thuc tnh:
BoundColumn: Ct ly gi tr ColumnCount: S ct cho hin ln ColumnHeads: Tiu ct ColumnWiths: rng cc ct
TO FORM
ComboBox: Hp chn
Mt s thuc tnh:
BoundColumn: Ct ly gi tr ColumnCount: S ct cho hin ln
ColumnHeads: Tiu ct
ColumnWiths: rng cc ct ControlSoure: Ni d liu a vo DropbuttonStyle: Kiu nt s xung ListRow: S dng s xung ListStyle: Kiu danh sch RowSource: Ni d liu a ly (ngun) TabIndex: Th t
Ng.Ng.Minh
TO FORM
ListBox: Hp danh sch
Mt s thuc tnh:
Tng t ComboBox, tuy nhin chim nhiu din tch v danh sch c sn trn form
MultiPage: To trang
Mt s thuc tnh:
TabOrienTation: Chn kiu Tab
Ng.Ng.Minh
TO FORM
Frame: Lm vic vi nhm
Mt s thuc tnh:
OptionButton: Nt Option MousePointer: Chn kiu chut ScrollBar: Cho thanh cun hin ln GroupName: Tn Group
Ng.Ng.Minh
TO FORM
ToggleButton: Nt Toggle: chn kiu thay phin
SmallChange: Gi tr mi ln thay i.
Ng.Ng.Minh
TO FORM NG NHP
VD1: To mt Form ng nhp nh sau:
- Cho hin th Ribon Developer (Vo File/Option/Customize ribon -> chn Maintab -> check vo Developer). - Chn Tab Developer/Visual Basic (hoc nhn Alt+F11) -Chn menu Inset/UserForm
Ng.Ng.Minh
TO FORM NG NHP
- Click chut phi vo Form, chn Propties. Hp thoi Propertis xut hin:
Mc (Name): t tn Form, VD: FrmDangnhap Caption: Tiu Form th hin ln, VD: Dang nhap he thong Sau ta a cc i tng vo Form - Tn ca cc i tng trong v d minh ha: Text Tn ng nhp: Txttendangnhap Text Mt khu: Txtmatkhau Nt ng nhp: Cmddangnhap Nt thot: Cmdthoat
Ng.Ng.Minh
TO FORM NG NHP
Double Click chut vo Form, a on m lnh vo:
Phng thc khi ng: Private Sub UserForm_Click() Tt thanh trng thi:
Application.StatusBar = FALSE
Gn thng tin vo tiu : Application.Caption = "KE TOAN EXCEL - Giang vien: Nguyen Ngoc Minh"
Tt thanh cun:
Application.DisplayScrollBars = FALSE Di chuyn n sheet c tn l MAIN Application.Sheets("MAIN").Select End Sub
Ng.Ng.Minh
TO FORM NG NHP
Double Click chut vo Nt ng nhp, a on m lnh vo:
Phng thc ng nhp h thng:
Khai bo bin
Dim USERNAME, PASSWORD As String Dim i As Integer Dim TIMTHAY As Boolean Di chuyn n worksheet c tn l "Soure" Worksheets("Soure").Select Gn gi tr ban u cho bin TIMTHAY TIMTHAY = False
Ng.Ng.Minh
TO FORM NG NHP
Bt u kim tra tn v mt khu:
i = 27 a gi tr u tin vo bin USERNAME = Range("A" & i).Value
Ng.Ng.Minh
TO FORM NG NHP
Kim tra tn ng nhp v mt khu:
If (LCase(Trim(Me.Txttendangnhap.Value)) = USERNAME) And (LCase(Trim(Me.Txtmatkhau.Value)) = PASSWORD) Then Nu c gn gi tr cho bin TIMTHAY = TRUE TIMTHAY = True v thot ra khi vng lp, khng cn tm na. Exit Do End If
Ng.Ng.Minh
TO FORM NG NHP
ng Form v tr vo Excel
Unload Me Else Nu tm khng thy th ln nhc nh v xa gi tr trong cc Texbox
TO FORM NG NHP
Phng thc kim tra khong trng tn ng nhp
Private Sub Txttendangnhap_Change() Khai bo bin Dim i, Dai As Integer
Nu l k t trng
If KYTU = " " Then Ng.Ng.Minh
TO FORM NG NHP
Hin th hp thoi thng bo
MsgBox Tn ng nhp khng cho php c khong trng!", vbOKOnly, K ton Excel" Ri xa Textbox .Txttendangnhap.Value = "" Di chuyn vo li Text ng nhp .Txttendangnhap.SetFocus Thot khi vng lp
Exit For
End If Next i End With End Sub
Ng.Ng.Minh
TO FORM NG NHP
Phng thc kha mn hnh
Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer) If CloseMode = 0 Then Cancel = True End Sub
Thot v Window
Private Sub cmdThoat_Click() Application.Quit End Sub
Ng.Ng.Minh
FrmDangnhap.Show
FrmMain.Show Ri hin thng bo Title = "Khoa KT-KT:" MsgBox " " Khoa KT-KT xin chao ban ! " & Chr(13) & Chr(13) & _
Sheets("A_MENU").Select
Ng.Ng.Minh
Ng.Ng.Minh
TO CY TH MC
VD2: To mt Cy phn h chng t nh sau:
lm c cy th mc trc ht Toolbox bn phi c TreeView v ImageList. => Bn vo Tool (hoc click chut phi vo Toolbox), chn Additional Controls, ri chn 2 mc sau:
Ng.Ng.Minh
TO CY TH MC
Khi bn s thy trn Control c thm 2 cng c nh trn hnh v.
Bn chn TreeView, ri v ln Form ni bn mun to cay th mc. Sau chn ImageList v cng v ln Form
Ng.Ng.Minh
TO CY TH MC
Trong hp thoi Properties ca ImageList, chn mc Custom (Trong v d ny c tn l MinhImageList) => Xut hin hp thoi Property Pages
- Ti Th General chn Option 16x16
Ng.Ng.Minh
TO CY TH MC
By gi bn g on Code sau cho Form:
Private Sub UserForm_initialize() Khai bo bin Dim NodeX As Node
TO CY TH MC
Set NodeX = MinhTreeView.Nodes.Add("CV5", tvwChild, "CV5_2", "Giam tai san", 2)
Set NodeX = MinhTreeView.Nodes.Add("CV5", tvwChild, "CV5_3", "Khau hao tai san", 2) End Sub Xong bn chy th Form bn s thy hot ng tng t cy th mc. Tc bn Doubeclick th th mc con s bung ra, click ln na th n s thu li.
Ng.Ng.Minh
TO CY TH MC
Private Sub MinhTreeView_Click()
Khai bo bin lu tr mc c chn trn Treeview Dim MenuIndex As String Gn gi tr ca mc c chn trn Treeview vo bin MenuIndex MenuIndex = MinhTreeView.SelectedItem.Key X l cc trng hp Select Case MenuIndex Case "CV5_1_1"
FrmPhieuThu.Show
Case "CV5_1_2" MainForm.Show End Select End Sub
Ng.Ng.Minh
CHUYN MN HC
Ng.Ng.Minh