Giáo trình Kế toán Excel-Ribon - Nguyễn Ngọc Minh

pdf 64 trang huongle 6190
Bạn đang xem 20 trang mẫu của tài liệu "Giáo trình Kế toán Excel-Ribon - Nguyễn Ngọc Minh", để tải tài liệu gốc về máy bạn click vào nút DOWNLOAD ở trên

Tài liệu đính kèm:

  • pdfgiao_trinh_ke_toan_excel_ribon_nguyen_ngoc_minh.pdf

Nội dung text: Giáo trình Kế toán Excel-Ribon - Nguyễn Ngọc Minh

  1. CHUYÊN ĐỀ MÔN HỌC KẾ TOÁN EXCEL GV: Nguyen Ngoc Minh Email: minhhoangtell@yahoo.com Ng.Ng.Minh
  2. NỘI DUNG 1. Tạo bảng, dùng hàm, các chức năng macro, validation, advanced filter, lập được phiếu thu-chi, phiếu nhập xuất, thẻ kho, báo cáo tài chính tương tự file Kế toán Excel 2011: 2 điểm 2. Làm được Form như form đăng nhập hệ thống, cây thư mục, form nhập liệu và hiểu về VBA (phiếu nhập xuất, thu chi ): 3 điểm 3. Tạo được Ribon người dùng cho file sử dụng như các Tab, Group, Control : 3 điểm 4. Có ý hay, sáng tạo: 2 điểm Ng.Ng.Minh
  3. TẠO RIBON NGƯỜI DÙNG RIBON GV: Nguyen Ngoc Minh Email: minhhoangtell@yahoo.com Ng.Ng.Minh
  4. TẠO RIBON NGƯỜI DÙNG Giả sử ta muốn tạo một Ribon như sau: Nếu bạn muốn thay đổi giao diện Ribbon trong Excel 2010, bạn phải thêm RibbonX (xml) vào file customUI14.xml bên trong tập tin Excel của bạn. Ng.Ng.Minh
  5. TẠO RIBON NGƯỜI DÙNG Trước tiên bạn kiểm tra xem máy bạn đã có phiên bản NET framework 3 hoặc 4 chưa, sau đó bạn cài Custom UI Editor For Microsoft Office (trình soạn thảo giao diện người dùng tùy chỉnh). Đây là phiên bản của giao diện người dùng Custum Editor cung cấp cho bạn một tùy chọn để chèn một tập tin customUI14.xml cho Excel 2010 (nếu Excel 2007 thì là customUI.xml) Khi mở trình soạn thảo giao diện người dùng tùy chỉnh, bạn sẽ thấy rằng có 5 nút menu trên trình đơn thanh công cụ như sau. Open: Mở file Excel mà bạn muốn chỉnh sửa (thay đổi giao diện Ribbon cho tập tin này) Save: Lưu RibbonX trong tập tin mà bạn đã mở trong trình soạn thảo giao diện người dùng (Không có thể save khi tập tin được mở ra trong Excel) Ng.Ng.Minh
  6. TẠO RIBON NGƯỜI DÙNG Insert Icons : Chèn các biểu tượng của riêng bạn trong tập tin (các biểu tượng sẽ được lưu trong tập tin) Validate : Xác nhận RibbonX của bạn vì vậy bạn phải chắc chắn rằng có không có lỗi chính tả Generate Callbacks : Tạo Callback - Điều này sẽ tạo ra các macro (callbacks) cho mỗi hoạt động bạn có trong RibbonX. Chọn tất cả các callbacks và sao chép chúng vào trong một mô-đun bình thường trong bảng tính của bạn. Thực hiện: Bạn mở một tập tin Excel trong trình soạn thảo giao diện người dùng tùy chỉnh, click phải vào tên tập tin và chọn: Office 20120 Custom UI Part để tạo ra các tập tin customUI14.xml Ng.Ng.Minh
  7. TẠO RIBON NGƯỜI DÙNG Các bước thực hiện: 1. Mở một workbook mới và lưu nó dưới dạng .xlsm ví dụ Minh_Ribon.xlsm (Excel Macro-Enabled workbook) 2. Đóng bảng tính 3. Mở Minh_Ribon.xlsm trong trình soạn thảo giao diện người dùng tùy chỉnh 4. Nhấp chuột phải vào tên tập tin trong trình soạn thảo giao diện người dùng tùy chỉnh hoặc sử dụng menu Insert 5. Chọn "Office 2010 Custom UI Part" để tạo ra các tập tin customUI.xml 6. Dán RibbonX dưới đây trong cửa sổ bên phải Ng.Ng.Minh
  8. TẠO RIBON NGƯỜI DÙNG Ng.Ng.Minh
  9. TẠO RIBON NGƯỜI DÙNG Bạn có thể kiểm tra xem đoạn mã trên có bị lỗi hay không bằng cách nhấp chuột vào nút Validate 7. Lưu các thay đổi của bạn trong trình soạn thảo giao diện người dùng tùy chỉnh (click vào nút Save) và đóng lại (Chọn File -> Exit) 8. Mở tập tin trong Excel -> chọn Ribon Developer -> Visual Basic (hoặc nhấn Alt + F11). Chọn menu Insert Module. Sao chép macro dưới đây phần trong module: Sub Mar_Minh_T1_1(control As IRibbonControl) MsgBox " Khoa KT-KT xin chao ban ! " & Chr(13) & Chr(13) & _ "FILE CHI DUNG CHO HE DAI HOC" End Sub Bạn cũng có thể kiểm tra xem đoạn macro trên có bị lỗi hay không bằng cách vào menu Debug, chọn Compile VBAProject Ng.Ng.Minh
  10. TẠO RIBON NGƯỜI DÙNG 9. Lưu các thay đổi của bạn và đóng lại Bây giờ bạn có thể kiểm tra xem kết quả đã làm. Mở file Minh_Ribon, bạn sẽ thấy đã tạo được một ribon như sau: Và khi vào Ribon Gioi thieu, nhấn Button Khoa KT-KT, bạn sẽ thấy macro đã được thực thi như hình bên phải. Ng.Ng.Minh
  11. TẠO RIBON NGƯỜI DÙNG Tuy nhiên, Custom UI Editor For Microsoft Office lại không hỗ trợ Unicode. Vậy là sao để có giao diện tiếng Việt? Nếu chú ý bạn sẽ thấy Excel 2010 là các file zip, vì vậy nếu bạn thay đổi phần mở rộng thành zip và mở các tập tin trong chương trình zip của bạn, bạn thấy rằng có một vài thư mục bên trong zip. Nên bạn cần làm thêm các bước sau: 1. Mở trình soạn thảo giao diện người dùng tùy chỉnh mở file Minh_Ribon.xlsm và dùng bảng mã TCVN3 (ABC) hoặc VNI Windows để đưa đoạn mã vào. 2. Đổi đuôi file từ Minh_Ribon.xlsm thành Minh_Ribon.xlsm.zip (chỉ là đổi đuôi thôi, chứ không nén file). 3. Dùng WinRar hoặc Winzip mở file Minh_Ribon.xlsm.zip (chú ý là không được giải nén). Mở tới thư mục \customUI, chọn file customUI14.xml, bấm nút “Extract to” đến nơi cần lưu file customUI14.xml. Ng.Ng.Minh
  12. TẠO RIBON NGƯỜI DÙNG 4. Dùng NotePad để mở file customUI14.xml (nó nằm trong thư mục mà bạn đã “Extract to”, nhớ chọn All file), sau đó dùng Unikey (Nhấn Ctr+Shift+F6) để convert chuỗi sang Unicode, coppy đoạn đã convert này thay thế cho chuỗi cũ trong file customUI14.xml và lưu lại. 5. Trong cửa sổ Winrar (Winzip), chọn nút "Add" và tìm tới file customUI14.xml rồi chọn "OK". 6. Đổi đuôi file từ Minh_Ribon.xlsm.zip thành Minh_Ribon.xlsm. 7. Mở file Minh_Ribon.xlsm lên kiểm tra xem Ribon đã được thực thi tiếng việt chưa. Ng.Ng.Minh
  13. TẠO RIBON NGƯỜI DÙNG Vậy làm thế nào để đưa các biểu tượng của riêng tôi vào trong Ribbon? Bạn hãy thực hiện các bước sau: 1. Trước hết bạn phải có các file hình ảnh dạng Png hoặc Icon 2. Mở tập tin Minh_Ribon.xlsm trong trình soạn thảo giao diện người dùng tùy chỉnh 3. Click chuột phải vào customUI14.xml, chọn Insert Icons (hoặc vào menu Insert chọn Icons ) để chèn các file hình ảnh của bạn vào sẽ thấy nó ngay dưới customUI14.xml. Nếu không thấy thì bạn hãy nhấn vào nút + ngay trước customUI14.xml. 4. Nếu file ảnh bạn là logo_khoa thì đoạn mã sẽ là image="logo_khoa" (chú ý là image chứ không phải là imageMso nhé – vì đó là icon của Microsoft) Thực hiện xong các công việc trên. Nếu mở file Minh_Ribon.xlsm mà bạn thấy kết quả như trên là bạn đã thành công bước đầu. Ng.Ng.Minh
  14. VBA EXCEL GV: Nguyen Ngoc Minh Email: minhhoangtell@yahoo.com Ng.Ng.Minh
  15. VBA EXCEL • VBA (Visual Basic for Application) là ngôn ngữ được Microsoft phát triển dành riêng cho các ứng dụng thuộc bộ Office với mục đích xây dựng các ứng dụng phức tạp. VBA trong MS Excel là một phần trong đó. • VBA sử dụng ngôn ngữ lập trình Visual Basic, một ngôn ngữ lập trình tương đối dễ sử dụng và phổ biến nhất thế giới. Cấu trúc của một dự án VBA: • Mô-đun chuẩn (Module): là nơi chứa các mã lệnh khai báo, các chương trình con (hàm và thủ tục) • Mô-đun lớp (Class Module): là nơi chứa định nghĩa cho các lớp của dự án • UserForm: là giao diện dạng hộp thoại giúp cho việc giao tiếp giữa người sử dụng và chương trình được thuận tiện. Mở một dự án VBA: • Cho hiển thị Ribon Developer (Vào File/Option/Customize ribon -> chọn Maintab -> check vào Developer). • Chọn Tab Developer/Visual Basic (hoặc nhấn Alt+F11) Ng.Ng.Minh
  16. VBA EXCEL Cửa sổ VBA: Ng.Ng.Minh
  17. VBA EXCEL 1. Thanh trình đơn (Menu bar): Chứa tất cả các lựa chọn cần thiết để thao tác với VBA: 2. Cửa sổ dự án (Project Explorer Window): Liệt kê dưới dạng cây phân cấp các dự án hiện đang được mở trong VBA và các thành phần có trong trong dự án 3. Cửa sổ mã lệnh (Code Window): Người dùng có thể hiệu chỉnh mã lệnh, tạo ra mã lệnh mới trong cửa sổ mã lệnh. 4. Cửa sổ tra cứu đối tượng (Object Browser Window): Hiển thị các lớp, phương thức, thuộc tính, sự kiện và hằng số có trong thư viện đối tượng và trong dự án mà người dùng vừa tạo. Ng.Ng.Minh
  18. VBA EXCEL 5. Cửa sổ đối tượng trực quan (Visual Object Window): Cho phép người dùng thao tác trên các điều khiển một cách dễ dàng và thuận tiện 6. Hộp công cụ chứa điều khiển (Tool Box): Chứa các thanh công cụ giúp người dùng có thể chèn các điều khiển vào cửa sổ ngườii dùng (UserForm). 7. Cửa sổ thuộc tính (Properties Window): Cửa sổ này liệt kê tất cả các thuộc tính cửa đối tượng, qua đó người dùng có thể tham khảo và thay đổi các thuộc tính khi cần. Ng.Ng.Minh
  19. VBA EXCEL Sub - Function : VBA chủ yếu dùng để tạo các Sub (thủ tục) hay các Function (hàm). Sự khác biệt giữa Sub và Function là : • Sub thi hành một khối lệnh nào đó và không có giá trị trả về và chỉ có thể gọi Sub từ một Sub hay Function khác. • Function cũng thi hành một khối lệnh nhưng nó có giá trị trả về và có thể gọi Function ở cả Sub, Function khác hay gọi trong Form, Macro. Phương thức (Method) và thuộc tính (Property): Phương thức: thực thi một hành động nào đó Thuộc tính: mô tả về giá trị nó đang có, ta có thể lấy giá trị trả về hay xác lập thuộc tính (trừ những thuộc tính chỉ đọc) Vd: Me.Phai = “Nam” (ta có thể lấy hay gán giá trị cho nó) Me.Listbox.AddItem (nó chẳng trả về giá trị nào cả) Ng.Ng.Minh
  20. VBA EXCEL Public - Private : • Public: khi viết hàm, thủ tục nếu ta khai báo là Public thì nó sẽ có thể được sử dụng ở trong các module, class khác, tóm lại là có thể sử dụng ở mọi nơi. • Private: chỉ có thể sử dụng trong phạm vi module, class hiện hành • Nếu không chỉ rõ là Public hay Private thì kiểu mặc định là Public Module – Class: • Các đoạn code ta viết trong Form gọi là Class. Còn các đoạn code ta viết trong thẻ Module gọi là Module • Điểm khác nhau cơ bản của Module và Class là : Trong Module nếu ta khai báo hàm, thủ tục là Public thì ta có thể sử dụng tên hàm, thủ tục ở mọi nơi, còn khi ta muốn tham chiếu đến một hàm, thủ tục được khai báo Public trong Class thì ta phải sử dụng phương thức: Tên Form.Tên hàm, thủ tục Ng.Ng.Minh
  21. VBA EXCEL Các kiểu dữ liệu trong VBA : Kiểu dữ liệu Kích thước Vùng giá trị Byte 1 byte 0 > 255 Integer 2 bytes -32,768 > 32,767 Long 4 bytes -214,763,748 > 214,763,747 Single 4 bytes - 3,4 x 1038 > 3,4 x 1038 (chứa được 7 số lẻ) Double 8 bytes -1,97 x 10308 > 1,97 x 10308(chứa được 14 số lẻ) Boolean 1 byte -1/ 0 hoặc True/ False (tương đương kiểu Yes/ No trong Table) String(variable – length) 10 bytes + string length 0 231 ký tự String(fixed – length) Length of string 1 65.400 ký tự Currency 8 bytes -922,3373,203,685,479 > 922,3373,203,685,477 Date 8 bytes 1/1/100 > 31/12/9999 Kiểu người dùng x Kiểu này do người dùng định nghĩa Ng.Ng.Minh
  22. VBA EXCEL Khai báo biến: • Dim As • Vd: Dim a As Integer => Tức khai báo biến a là kiểu số nguyên Khai báo hằng (giá trị cố định): • Dùng Const • Vd: Const Pi = 3.14 Ng.Ng.Minh
  23. VBA EXCEL Phương pháp quy chiếu đến dữ liệu trong Excel: - Đến 1 sheet • Đi đến sheet thứ N: SheetN, Sheets(N), WorkSheetN, WorkSheets(N) • Đi đến sheet có tên là M: Sheets(“M”), WorkSheets(“M”) - Đến 1 cell: • SheetM.Cells(hàng, cột) => đi đến ô trong sheet có tên SheetM • WorkSheets(N).Cells(hàng, cột) => đi đến ô trong sheet thứ N -Thêm 1 dòng trong sheet: • SheetM.Rows(i).Insert => Chèn thêm 1 dòng vị trí hàng i -Xóa 1 dòng trong sheet: • SheetM.Rows(i).Delete => Xóa 1 dòng vị trí hàng i Ng.Ng.Minh
  24. VBA EXCEL -Thêm 1 cột trong sheet: • SheetM.Columns(i).Insert => Chèn thêm 1 cột vị trí hàng i -Xóa 1 cột trong sheet: • SheetM.Columns(i).Delete => Xóa 1 cột vị trí hàng i Khai báo hàm: Function ([Tên biến] As [Kiểu biến]) - Các khai báo biến cục bộ - Các lệnh của hàm End Function Ng.Ng.Minh
  25. VBA EXCEL Khai báo thủ tục: Sub ([Danh sách biến]) - Các khai báo biến cục bộ - Các lệnh của hàm End Sub Ví dụ: Tạo hàm tính giai thừa 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: Lập hàm tính Xn Ng.Ng.Minh
  26. VBA EXCEL Các cấu trúc điều khiển: Cấu trúc tuần tự: Có dạng: - Câu lệnh 1 - Câu lệnh 2 If then Các câu lệnh End If Cấu trúc phân nhánh: If Then Các câu lệnh nếu điều kiện đúng Else Các câu lệnh nếu điều kiện sai End If Ng.Ng.Minh
  27. VBA EXCEL Cấu trúc lựa chọn Select Case : Select Case Case [Các lệnh nếu kiểm tra thỏa mãn giá trị 1] Case [Các lệnh nếu kiểm tra thỏa mãn giá trị 2] . Case Else [Các lệnh nếu kiểm tra không thỏa mãn các giá trị trên] End Select Vòng lặp While Wend: Vòng lặp sẽ thực lệnh "nhóm_lệnh" nếu "điều_kiện" vẫn còn đúng. While điều_kiện nhóm_lệnh Wend Ng.Ng.Minh
  28. VBA EXCEL Ví dụ: Tính tổng 100 số đầu tiên: 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
  29. VBA EXCEL Cấu trúc Do While Loop: Vòng lặp thực hiện cho đến khi nào điều kiện vẫn còn đúng. Do While [Các lệnh nếu điều kiện đúng] Exit Do Loop Vd: Hiện lên 10 dòng 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
  30. VBA EXCEL Cấu trúc Do Until Loop: Vòng lặp thực hiện cho đến khi nào gặp điều kiện đúng. Do Until [Các lệnh nếu điều kiện không thỏa mãn] Exit Do Loop Cấu trúc Do Loop While: Tương tự Do While Loop, nhưng có thể không thực hiện lần nào. Do [Các lệnh] Exit Do Loop While Cấu trúc Do Loop Until: Ngược lại vòng lặp Do Loop While Do [Các lệnh] Exit Do Loop Until Ng.Ng.Minh
  31. VBA EXCEL Ví dụ: Tính tổng các 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
  32. VBA EXCEL Cấu trúc lặp xác định: For For = To [Step ] [Các lệnh] Exit For Next Ví dụ: Sử dụng vòng lặp For, tính tổng 100 số tự nhiên đầu tiên 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 “Tổng 100 số tự nhiên đầu tiên là: ”& S End Sub Ng.Ng.Minh
  33. TẠO FORM FORM GV: Nguyen Ngoc Minh Email: minhhoangtell@yahoo.com Ng.Ng.Minh
  34. TẠO FORM Phần này hướng dẫn bạn tạo một Form người dùng trong Excel Ví dụ chúng ta sẽ Userform như sau: Ng.Ng.Minh
  35. TẠO FORM Cách tạo Userform - Cho hiển thị Ribon Developer (Vào File/Option/Customize ribon -> chọn Maintab -> check vào Developer). - Chọn Tab Developer/Visual Basic (hoặc nhấn Alt+F11) -Chọn menu Inset/UserForm Cửa sổ hiện lên như sau: Nếu hộp công cụ không tự động xuất hiện, click vào View và sau đó chọn Toolbox Ng.Ng.Minh
  36. TẠO FORM Giới thiệu về hộp thoại Toolbox: - Label - Nhãn - Textboxes - Hộp văn bản - Listbox – Hộp danh sách - Combobox – Hộp chọn - Checkbox - Hộp kiểm - Option button - Nút lựa chọn - Frames - Khung - Command button – Nút lệnh - Spin button – Nút Spin - ScrollBar – Thanh cuộn Ng.Ng.Minh
  37. TẠO FORM Thay đổi tên và thuộc tính: Nhấn chuột phải , sau đó chọn vào Properties để thực hiện Label (Nhãn) : Các chữ như Đại học kế toán 4, Khảo sát nghề nghiệp, họ tên là Label Chọn chữ A trên hộp Toolbox, sau đó vạch 1 đường trong form, gõ chữ vào, và định dạng lại bằng cách: Chọn label muốn định dạng, nhấn chuột phải, sau đó chọn vào Properties để thực hiện Ng.Ng.Minh
  38. TẠO FORM Một số thuộc tính chính: Name – tên Caption: thể hiện lên Backcolor: màu nền BackStyle: kiểu nền Enabled: Có thể thực hiện Font: Kiểu chữ Forecolor: Màu chữ Picture: Chọn ảnh nền Visible: hiện lên Ng.Ng.Minh
  39. TẠO FORM Texbox: Chọn ký hiệu abl Một số thuộc tính: ControlSoure: Dữ liệu đưa vào ControlTiptext: Hướng dẫn hiện lên TextAlign: Canh đoạn text Locked: Khóa ScrollBars: Có cho thanh cuộn hay không (trường hợp nội dung quá dài). WordWrap: Có cho phép chữ tự động xuống dòng không. Ng.Ng.Minh
  40. TẠO FORM Image: Hình chọn lý hiệu Một số thuộc tính: PictureSizeMode: Chọn cở hình SpecialEffect: Chọn hiệu ứng đặc biệt ComboBox: Hộp chọn Một số thuộc tính: BoundColumn: Cột lấy giá trị ColumnCount: Số cột cho hiện lên ColumnHeads: Tiêu đề cột ColumnWiths: Độ rộng các cột Ng.Ng.MinhControlSoure: Nơi dữ liệu đưa vào
  41. TẠO FORM ComboBox: Hộp chọn Một số thuộc tính: BoundColumn: Cột lấy giá trị ColumnCount: Số cột cho hiện lên ColumnHeads: Tiêu đề cột ColumnWiths: Độ rộng các cột ControlSoure: Nơi dữ liệu đưa vào DropbuttonStyle: Kiểu nút sổ xuống ListRow: Số dòng sổ xuống ListStyle: Kiểu danh sách RowSource: Nơi dữ liệu đưa lấy (nguồn) TabIndex: Thứ tự Ng.Ng.Minh
  42. TẠO FORM ListBox: Hộp danh sách Một số thuộc tính: Tương tự ComboBox, tuy nhiên chiếm nhiều diện tích vì danh sách có sẵn trên form MultiPage: Tạo trang Một số thuộc tính: TabOrienTation: Chọn kiểu Tab Ng.Ng.Minh
  43. TẠO FORM Frame: Làm việc với nhóm Một số thuộc tính: OptionButton: Nút Option MousePointer: Chọn kiểu chuột ScrollBar: Cho thanh cuộn hiện lên GroupName: Tên Group Ng.Ng.Minh
  44. TẠO FORM ToggleButton: Nút Toggle: chọn kiểu thay phiên SpinButton: Nút Spin: tăng giảm giá trị Một số thuộc tính: Max: Giá trị lớn nhất Min: Giá trị nhỏ nhât SmallChange: Giá trị mỗi lần thay đổi. ScrollBar: Thanh cuộn: Một số thuộc tính: Tương tự nút Spin, nhưng có thanh cuộn ổ giữa. Ng.Ng.Minh
  45. VÍ DỤ VỀ VBA & FORM GV: Nguyen Ngoc Minh Email: minhhoangtell@yahoo.com Ng.Ng.Minh
  46. TẠO FORM ĐĂNG NHẬP VD1: Tạo một Form đăng nhập như sau: - Cho hiển thị Ribon Developer (Vào File/Option/Customize ribon -> chọn Maintab -> check vào Developer). - Chọn Tab Developer/Visual Basic (hoặc nhấn Alt+F11) -Chọn menu Inset/UserForm Ng.Ng.Minh
  47. TẠO FORM ĐĂNG NHẬP - Click chuột phải vào Form, chọn Propties. Hộp thoại Propertis xuất hiện: • Mục (Name): Đặt tên Form, VD: FrmDangnhap • Caption: Tiêu đề Form thể hiện lên, VD: Dang nhap he thong Sau đó ta đưa các đối tượng vào Form - Tên của các đối tượng trong ví dụ minh họa: - Text Tên đăng nhập: Txttendangnhap - Text Mật khẩu: Txtmatkhau - Nút Đăng nhập: Cmddangnhap - Nút thoát: Cmdthoat Ng.Ng.Minh
  48. TẠO FORM ĐĂNG NHẬP - Double Click chuột vào Form, đưa đoạn mã lệnh vào: Phương thức khởi động: Private Sub UserForm_Click() Tắt thanh trạng thái: Application.StatusBar = FALSE Gắn thông tin vào tiêu đề: Application.Caption = "KE TOAN EXCEL - Giang vien: Nguyen Ngoc Minh" Tắt thanh cuộn: Application.DisplayScrollBars = FALSE Di chuyển đến sheet có tên là MAIN Application.Sheets("MAIN").Select End Sub Ng.Ng.Minh
  49. TẠO FORM ĐĂNG NHẬP - Double Click chuột vào Nút Đăng nhập, đưa đoạn mã lệnh vào: Phương thức đăng nhập hệ thống: Private Sub Cmddangnhap_Click() Khai báo biến Dim USERNAME, PASSWORD As String Dim i As Integer Dim TIMTHAY As Boolean Di chuyển đến worksheet có tên là "Soure" Worksheets("Soure").Select Gán giá trị ban đầu cho biến TIMTHAY TIMTHAY = False Ng.Ng.Minh
  50. TẠO FORM ĐĂNG NHẬP Bắt đầu kiểm tra tên và mật khẩu: i = 27 Đưa giá trị đầu tiên vào biến USERNAME = Range("A" & i).Value Khi biến USERNAME có giá trị khác rỗng, tức là có thành viên Do While USERNAME <> "" Lấy giá trị dòng i, cột A gắn vào biến USERNAME USERNAME = Range("A" & i).Value Lấy giá trị dòng i, cột B gắn vào biến PASSWORD PASSWORD = Range("B" & i).Value Ng.Ng.Minh
  51. TẠO FORM ĐĂNG NHẬP Kiểm tra tên đăng nhập và mật khẩu: If (LCase(Trim(Me.Txttendangnhap.Value)) = USERNAME) And (LCase(Trim(Me.Txtmatkhau.Value)) = PASSWORD) Then Nếu có gán giá trị cho biến TIMTHAY = TRUE TIMTHAY = True và thoát ra khỏi vòng lặp, không cần tìm nữa. Exit Do End If Nếu không tìm thấy, đi đến dòng kế tiếp i = i + 1 Loop Sau khi thoát khỏi vòng lặp, kiểm tra lại biến TIMTHAY If TIMTHAY = True Then Ng.Ng.Minh
  52. TẠO FORM ĐĂNG NHẬP Đóng Form và trở vào Excel Unload Me Else Nếu tìm không thấy thì lên nhắc nhở và xóa giá trị trong các Texbox Title = "Nhap lai:" MSG = "Sai roi ban oi!" & Chr(13) & " Nhap lai nhe? " Response = MsgBox(MSG, 0 + 64, Title) Me.Txttendangnhap.Value = "" Me.Txtmatkhau.Value = "" Di chuyển vào lại Text Đăng nhập Me.Txttendangnhap.SetFocus End If End Sub Ng.Ng.Minh
  53. TẠO FORM ĐĂNG NHẬP Phương thức kiểm tra khoảng trắng tên đăng nhập Private Sub Txttendangnhap_Change() Khai báo biến Dim i, Dai As Integer Dim KYTU As String With Me Dai = Len(.Txttendangnhap.Value) Kiểm tra từng ký tự trong chuỗi đăng nhập For i = 1 To Dai Lấy ra 1 ký tự tại vị trí thứ i KYTU = Mid(.Txttendangnhap.Value, i, 1) Nếu là ký tự trống If KYTU = " " Then Ng.Ng.Minh
  54. TẠO FORM ĐĂNG NHẬP Hiển thị hộp thoại thông báo MsgBox “Tên đăng nhập không cho phép có khoảng trắng!", vbOKOnly, “Kế toán Excel" Rồi xóa Textbox .Txttendangnhap.Value = "" Di chuyển vào lại Text Đăng nhập .Txttendangnhap.SetFocus Thoát khỏi vòng lặp Exit For End If Next i End With End Sub Ng.Ng.Minh
  55. TẠO FORM ĐĂNG NHẬP Phương thức khóa màn hình Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer) If CloseMode = 0 Then Cancel = True End Sub Thoát về Window Private Sub cmdThoat_Click() Application.Quit End Sub Ng.Ng.Minh
  56. TỰ ĐỘNG THI HÀNH LỆNH KHI MỞ FILE Tự động thi hành lệnh khi mở file: Vào VBA, Double vào ThisWorkbook, rồi đưa đoạn mã lệnh sau vào: Private Sub Workbook_Open() Khi mở file, tự động gọi Form Đăng nhập, sau đó gọi form có tên là FrmMain FrmDangnhap.Show FrmMain.Show Rồi hiện thông báo Title = "Khoa KT-KT:" MsgBox " Khoa KT-KT xin chao ban ! " & Chr(13) & Chr(13) & _ " FILE CHI DUNG CHO HE DAI HOC ", vbInformation, Title Chọn sheet có tên là A_MENU Sheets("A_MENU").Select Ng.Ng.Minh
  57. TỰ ĐỘNG THI HÀNH LỆNH KHI MỞ FILE Khóa thanh cuộn, chỉ cho giới hạn từ ô D4->S28 ActiveSheet.ScrollArea = "" ActiveSheet.ScrollArea = "$D$10:$S$28" Gán phím tắt để gọi Macro (phím Shift+F4 để gọi Macro có tên là Minh) Application.OnKey "+{F4}", "Minh" End Sub Ng.Ng.Minh
  58. TẠO CÂY THƯ MỤC VD2: Tạo một Cây phân hệ chứng từ như sau: Để làm được cây thư mục trước hết Toolbox bạn phải có TreeView và ImageList. => Bạn vào Tool (hoặc click chuột phải vào Toolbox), chọn Additional Controls, rồi chọn 2 mục sau: Ng.Ng.Minh
  59. TẠO CÂY THƯ MỤC Khi đó bạn sẽ thấy trên Control có thêm 2 công cụ như trên hình vẽ. - Bạn chọn TreeView, rồi vẽ lên Form nơi bạn muốn tạo cay thư mục. - Sau đó chọn ImageList và cũng vẽ lên Form Ng.Ng.Minh
  60. TẠO CÂY THƯ MỤC Trong hộp thoại Properties của ImageList, chọn mục Custom (Trong ví dụ này có tên là MinhImageList) => Xuất hiện hộp thoại Property Pages - Tại Thẻ General chọn Option 16x16 - Qua thẻ Images, vào Insert Picture để chèn hình muốn có tại đầu cây thư mục * Chú ý là Cấp của nó được thể hiện ở mục Index * Nếu không muốn thì bạn chọn Remove Picture Ng.Ng.Minh
  61. TẠO CÂY THƯ MỤC Bây giờ bạn gõ đoạn Code sau cho Form: Private Sub UserForm_initialize() Khai báo biến Dim NodeX As Node Khai báo sử dụng ImageList trong TreeView MinhTreeView.ImageList = MinhImageList Tạo các nút trong TreeView Set NodeX = MinhTreeView.Nodes.Add(, , "CV5", "Tai san co dinh", 1) Set NodeX = MinhTreeView.Nodes.Add("CV5", tvwChild, "CV5_1", "Tang tai san", 2) Set NodeX = MinhTreeView.Nodes.Add("CV5_1", tvwChild, "CV5_1_1", "Mua moi tai san", 3) Set NodeX = MinhTreeView.Nodes.Add("CV5_1", tvwChild, "CV5_1_2", "Danh gia lai", 3) Ng.Ng.Minh
  62. TẠO CÂY THƯ MỤC 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 bạn chạy thử Form bạn sẽ thấy hoạt động tương tự cây thư mục. Tức bạn Doubeclick thì thư mục con sẽ bung ra, click lần nữa thì nó sẽ thu lại. Tuy nhiên, đến đây bạn vẫn chưa ứng dụng vào công việc được. Vậy làm sao khi ta click, thì nó sẽ thực thi một công việc nào đó? Bạn hãy gán đoạn Code sau vào: Ng.Ng.Minh
  63. TẠO CÂY THƯ MỤC Private Sub MinhTreeView_Click() Khai báo biến lưu trữ mục được chọn trên Treeview Dim MenuIndex As String Gán giá trị của mục được chọn trên Treeview vào biến MenuIndex MenuIndex = MinhTreeView.SelectedItem.Key Xử lý các trường hợp Select Case MenuIndex Case "CV5_1_1" FrmPhieuThu.Show Case "CV5_1_2" MainForm.Show End Select End Sub Ng.Ng.Minh
  64. CHUYÊN ĐỀ MÔN HỌC HAVE A GOOD TIME! BYE BYE Email: minhhoangtell@yahoo.com Ng.Ng.Minh