Microsoft Visual Basic for Applications Created & Presented by: TBL Group
Nội dung chính Giới thiệu về VBA. Các khái niệm cơ bản trong VBA. Ví Dụ và…  ví dụ   và…  lại vÍ dỤ .
I. Giới thiệu về VBA VBA là gì ? Lập trình hướng sự kiện. Why is VBA?
I.1 VBA là gì? VBA: Visual Basic for Applications Ngôn ngữ lập trình  ->  Microsoft Office  VBA: Mạnh mẽ hơn. Linh hoạt hơn. Lỗi  nhiều hơn.
I.2 Lập trình hướng sự kiện VBA - môi trường phát triển theo hướng đối tượng. Sự kiện đóng vai trò quan trọng. Người sử dụng xác định trình tự.
Why is VBA? Dễ dàng sửa chữa và duy trì  Hàm cần tìm không có trong thư viện?  Bẫy lỗi (Error trapping). Tự động tạo mới, thay đổi các đối tượng Thực hiện các lệnh cấp thấp (system-level) Can thiệp đến từng bản ghi  Khả năng tùy biến tham số cao
II. Các khái niệm cơ bản Objects  Properties & Methods & Events Procedures & Modules  Soạn thảo mã lệnh với VBE. Mệnh đề logic, cấu trúc lặp...  Các hàm có sẵn trong VBA
A. OBJECTS Bảng Form Truy vấn Báo cáo ……… .
 
B.1 Properties Xác định thông tin về đối tượng  Truy xuất:  ( Tên đối tượng).(tên thuộc tính) Ví dụ:  hovaten.caption   Hình 1:  Bảng thuộc tính của một đối tượng
B.2  Methods Phương thức, thực hiện các thao tác nhất định Ví dụ: đối tượng  DoCmd: [ Close, OpenForm, GotoControl, FindRecord,…] DoCmd.Close acForm, "formname", acSaveNo
B.3  Events Event = sự kiện  ( Oxford Dictionary ) VBA – thực hiện các công việc cần thiết khi sự kiện tương ứng xảy ra.
C.1  Chương trình con-Procedure Đoạn chứa mã chương trình Có thể nhận tham số Gồm 3 loại Thủ tục:  Sub procedures Hàm:  Function procedures Property procedures
C.1.1 Thủ tục - Sub Procedure Thủ tục: Tính toán, cập nhật dữ liệu,... Mã lệnh nằm giữa mệnh đề  Sub  và  End Tham số, cách dấu phẩy “,”. Sub  Tinh_Tong(First, second) Dim Result  Result = First + Second  Debug.Print  Result End Sub
C.1.2 Hàm - Function Trả về giá trị Không dùng để xử lý sự kiện. Bao gồm tập lệnh nằm giữa   Function  và  End. Thoát khỏi hàm bằng câu lệnh:  Exit Function Ví dụ: Kiểm tra xem ngày đ ư a vào có thuộc thiên niên kỷ thứ 3 hay không
 
C.1 Hàm vs. Thủ tục Không có giá trị trả về Dùng để xử lý các sự kiện Mã lệnh nằm giữa  Sub  và  End Có giá trị trả về  Không dùng để xử lý sự kiện Mã lệnh nằm giữa  Function  và  End   Thủ tục – Procedure Hàm – Function
C.1.3 Properties procedures Property procedures: Để định nghĩa các thuộc tính của người sử dụng. Gồm 3 loại:  Property Get,  Property Set,  Property Let .
C.2 Modules Chứa: thủ tục, hàm và các khai báo như  Dim, Option, Explicit,... Có hai loại Modules cơ bản: Modules chuẩn Modules trong  Class (form class modules, report class modules, custom class modules)
 
D. Soạn thảo mã lệnh - VBE Truy xuất:  Tools-Macro-Visual Basic Editor   Alt – F11  Các cửa sổ: Edit windows Properties Debug window   Objects window
E. Các khái niệm cơ bản Khai báo biến - Sử dụng mệnh đề  “ Dim ” Đơn giản: Dim   (tên_biến)  As   (Kiểu_dữ_liệu) Ví dụ: Dim  x Dim  number  As Integer Dim  Matrix(1 To 3, 1 To 4)  As Integer Dim  Dynamic()  As Integer
E. Các lệnh cơ bản Câu lệnh điều kiện -   If...Then    if  condition  Then 'Statements End If       if  (In Love)  Then (Get Married) End If
E.1 Các lệnh cơ bản – If … then If...Then  If  condition  Then  Statements1 Else Statements2 End If
E.1 Các lệnh cơ bản – If… then… If  condition1  Then 'Statements ElseIf  condition2   Then Statements Else 'Statements End If
E.1 Các lệnh cơ bản – If… then… Form trong hình vẽ sau đây cho phép người sử dụng chọn lựa việc tính căn bậc hai hay ba: Sub  cmdComputer_Click() If  opgComputeType = 1 Then MySquarer txtInput.Value Else MyCuber  txtInput.Value End If End Sub
E.1 Các lệnh cơ bản – If… then… Sub  MySquarer (Number  As Double ) dblResult = Number * Number MsgBox dblResult, vbInformation, _   " What  a silly example!“ End Sub Sub  MyCuber (Number  As Double ) Dim dblResult  As Double dblResult = Number ^ 3 MsgBox dblResult, vbInformation, _  “Let’s play HL 2.0“ End Sub
E.2 Mệnh đề lựa chọn Case Select Case   test expression   Case   list-1   'Statements Case   list-2 'Statements Case   Else 'Statements End Select
E.3 Các lệnh cơ bản – For…Next For  counter  =  start  To  end  [Step  step ] [ statements ] [Exit For] [ statements ] Next [ counter ]
E.3 Các lệnh cơ bản – For…Next Các câu lệnh  For  có thể lồng nhau: Result = 0 For  I = 1  To  10   For  J = 1  To  10   For  K = 1  To  10   Result = Result + I – J + K   Next  K   Next  J Next  I Bài tập:  Result = ???
E.3 Các lệnh cơ bản – For…Next Result ? 0 55 1000 5500 I & J triệt tiêu nhau. K được tính 1000 lần = 100 *(1 + 2+…+10) =  5500
E.4 Các lệnh cơ bản – For Each… For   Each   element   In   group [ statements ] [ Exit For ] [ statements ] Next  [ element ]
E.4 Các lệnh cơ bản – For Each… For Each  c in worksheets(&quot;Sheet1&quot;).Range(&quot;A1:D10&quot;)   If c.Value < .001 Then   c.Value = 0 End If Next  c Lặp trong vùng A1:D10, trong Sheet1,  thay giá trị trong ô nhỏ hơn 0.001 bằng 0.
E.5 Các lệnh cơ bản- Vòng lặp Do… Do  [{ While  |  Until }  condition ] [ statements ] [ Exit Do ] [ statements ] Loop
E.5 Các lệnh cơ bản- Vòng lặp Do… Do [ statements ] [ Exit Do ] [ statements ] Loop  [{ While  |  Until }  condition ]
F. Các hàm có sẵn–Built in function Sum, Count, RGB, FV, NPV, CreateObject, GetObject, SysCmd   Các hàm khác Xử lý chuỗi, văn bản Left, Right, Mid, Trim,   UCase, LCaseStrReverse, Replace, InStr, InStrReverse Văn bản Gửi thông báo và nhận dữ liệu  MsgBox ,  InputBox Thông điệp Thực hiện các phép toán Rnd, Sqr, Exp, Log, Sin, Cos, Tan   Hàm toán học Xác nhận kiểu của các biến  IsDate, IsTime,   IsNumeric, IsNull,   IsEmpty,VarType Hàm kiểm tra kiểu Bẫy lỗi và định nghĩa các lỗi do người sử dụng  Error ,  CVErr ,  IsError   Hàm xử lý lỗi  Thống kê, tổng hợp kết quả theo từng miền  DLookup, DCount,   DSum, DAvg, DVar   Hàm theo miền  Tính toán với ngày tháng và giờ. Date, Now, DateAdd,   DatePart, DateDiff,   Year, Month, Day,   Hour, Minute, Second,   Weekday, DateValue,   DateSerial, MonthName, WeekdayName, FormatDateTime   Date/time Xác đỉnh, và đổi kiểu các biến CDbl ,  CSng ,  CInt ,  CCur ,  CDec, Str ,  Val,   Hex ,  Oct   Hàm chuyển đổi Tác dụng   Tên hàm   Danh mục
Tìm Hiểu VBA Qua Ví dụ Ví dụ 1: Kiểm tra dữ liệu – Data Validation
Tìm Hiểu VBA Qua Ví dụ Ví dụ 1: Kiểm tra dữ liệu – Data Validation
Kiểm tra dữ liệu - Data Validation Private Sub  Form_BeforeUpdate(Cancel  As Integer ) If  IsNull(Diachiemail)  Then If  MsgBox(&quot;Ban da khong nhap dia chi email. Van luu lai chu?&quot;,_ vbYesNo + vbQuestion, ApplicationName) = vbNo  Then Cancel = True Diachiemail.SetFocus End If End If End Sub
Ví dụ 2: Bẫy lỗi - Errors trapping
Ví dụ 2: Bẫy lỗi - Errors trapping
Ví dụ 2: Bẫy lỗi - Errors trapping Private Sub  Form_Error(DataErr  As   Integer , Response  As   Integer ) Select Case  DataErr Case  2237 Call MsgBox(&quot;Sinh vien khong co trong tep.&quot; & _ &quot;Hay kiem tra chinh ta va nhap lai chinh xac, hoac kich&quot; & _ &quot;nut Them de nhap mot ban ghi moi&quot;, vbExclamation, ApplicationName) Response = acDataErrContinue Case  3022 Call MsgBox(&quot;Ban dang co them mot sinh vien co&quot; & _ &quot;so chung minh thu da co trong tep roi. Xin hay&quot; & _ &quot;sua lai so chung minh thu hoac huy bo ban ghi nay&quot; & _ &quot;va chuyen toi ban ghi ban dau&quot;, vbExclamation, ApplicationName) Case   Else Response = acDataErrDisplay End Select End Sub
Ví dụ 3: Tạo Shortcut
Ví dụ 3: Tạo Shortcut
Ví dụ 3: Tạo Shortcut Private Sub  Form_KeyDown(KeyCode  As Integer , Shift  As Integer ) 'Thuoc tinh Key Preview cua form phai dat la Yes If  KeyCode = vbKey1  And  Shift = acCtrlMask  Then  'Ctrl + 1 Thanhpho = &quot;Ha Noi&quot; Tinh = &quot;HN&quot; Dienthoaitruong = SetFocus End If If  KeyCode = vbKey2  And  Shift = acCtrlMask  Then  'Ctrl + 2 Thanhpho = &quot;Vinh&quot; Tinh = &quot;NA&quot; Dienthoaitruong = SetFocus End If End Sub
Tổng kết Giới thiệu về VBA. Các khái niệm cơ bản trong VBA. Objects  Properties & Methods  Procedures & Modules  Soạn thảo mã lệnh với VBE. Mệnh đề logic, cấu trúc lặp...  Các hàm có sẵn trong VBA Ví Dụ,  ví dụ  và vÍ dỤ . Bẫy Kiểm tra dữ liệu – Data Validation lỗi – Errors trapping Tạo phím tắt
References Hệ quản trị cơ sở dữ liệu Access –  Giáo trình khoa CNTT ĐHQG Hà Nội. Microsoft Visual Basic for Applications 6.0 Software Development Kit Access 97 –  Nguyễn Văn Ất – Nhà xuất bản văn hóa thông tin Programming Microsoft Access 2000 –  Rick Dobson – Microsoft Press 1999 MSDN Libary – April 2000 Microsoft Access Help. Advanced Access tutorial – Vander Kulk .
Thank you for your participation! The End.

Lap trinhvba

  • 1.
    Microsoft Visual Basicfor Applications Created & Presented by: TBL Group
  • 2.
    Nội dung chínhGiới thiệu về VBA. Các khái niệm cơ bản trong VBA. Ví Dụ và… ví dụ và… lại vÍ dỤ .
  • 3.
    I. Giới thiệuvề VBA VBA là gì ? Lập trình hướng sự kiện. Why is VBA?
  • 4.
    I.1 VBA làgì? VBA: Visual Basic for Applications Ngôn ngữ lập trình -> Microsoft Office VBA: Mạnh mẽ hơn. Linh hoạt hơn. Lỗi nhiều hơn.
  • 5.
    I.2 Lập trìnhhướng sự kiện VBA - môi trường phát triển theo hướng đối tượng. Sự kiện đóng vai trò quan trọng. Người sử dụng xác định trình tự.
  • 6.
    Why is VBA?Dễ dàng sửa chữa và duy trì Hàm cần tìm không có trong thư viện? Bẫy lỗi (Error trapping). Tự động tạo mới, thay đổi các đối tượng Thực hiện các lệnh cấp thấp (system-level) Can thiệp đến từng bản ghi Khả năng tùy biến tham số cao
  • 7.
    II. Các kháiniệm cơ bản Objects Properties & Methods & Events Procedures & Modules Soạn thảo mã lệnh với VBE. Mệnh đề logic, cấu trúc lặp... Các hàm có sẵn trong VBA
  • 8.
    A. OBJECTS BảngForm Truy vấn Báo cáo ……… .
  • 9.
  • 10.
    B.1 Properties Xácđịnh thông tin về đối tượng Truy xuất: ( Tên đối tượng).(tên thuộc tính) Ví dụ: hovaten.caption Hình 1: Bảng thuộc tính của một đối tượng
  • 11.
    B.2 MethodsPhương thức, thực hiện các thao tác nhất định Ví dụ: đối tượng DoCmd: [ Close, OpenForm, GotoControl, FindRecord,…] DoCmd.Close acForm, &quot;formname&quot;, acSaveNo
  • 12.
    B.3 EventsEvent = sự kiện ( Oxford Dictionary ) VBA – thực hiện các công việc cần thiết khi sự kiện tương ứng xảy ra.
  • 13.
    C.1 Chươngtrình con-Procedure Đoạn chứa mã chương trình Có thể nhận tham số Gồm 3 loại Thủ tục: Sub procedures Hàm: Function procedures Property procedures
  • 14.
    C.1.1 Thủ tục- Sub Procedure Thủ tục: Tính toán, cập nhật dữ liệu,... Mã lệnh nằm giữa mệnh đề Sub và End Tham số, cách dấu phẩy “,”. Sub Tinh_Tong(First, second) Dim Result Result = First + Second Debug.Print Result End Sub
  • 15.
    C.1.2 Hàm -Function Trả về giá trị Không dùng để xử lý sự kiện. Bao gồm tập lệnh nằm giữa Function và End. Thoát khỏi hàm bằng câu lệnh: Exit Function Ví dụ: Kiểm tra xem ngày đ ư a vào có thuộc thiên niên kỷ thứ 3 hay không
  • 16.
  • 17.
    C.1 Hàm vs.Thủ tục Không có giá trị trả về Dùng để xử lý các sự kiện Mã lệnh nằm giữa Sub và End Có giá trị trả về Không dùng để xử lý sự kiện Mã lệnh nằm giữa Function và End Thủ tục – Procedure Hàm – Function
  • 18.
    C.1.3 Properties proceduresProperty procedures: Để định nghĩa các thuộc tính của người sử dụng. Gồm 3 loại: Property Get, Property Set, Property Let .
  • 19.
    C.2 Modules Chứa:thủ tục, hàm và các khai báo như Dim, Option, Explicit,... Có hai loại Modules cơ bản: Modules chuẩn Modules trong Class (form class modules, report class modules, custom class modules)
  • 20.
  • 21.
    D. Soạn thảomã lệnh - VBE Truy xuất: Tools-Macro-Visual Basic Editor Alt – F11 Các cửa sổ: Edit windows Properties Debug window Objects window
  • 22.
    E. Các kháiniệm cơ bản Khai báo biến - Sử dụng mệnh đề “ Dim ” Đơn giản: Dim (tên_biến) As (Kiểu_dữ_liệu) Ví dụ: Dim x Dim number As Integer Dim Matrix(1 To 3, 1 To 4) As Integer Dim Dynamic() As Integer
  • 23.
    E. Các lệnhcơ bản Câu lệnh điều kiện - If...Then if condition Then 'Statements End If if (In Love) Then (Get Married) End If
  • 24.
    E.1 Các lệnhcơ bản – If … then If...Then If condition Then Statements1 Else Statements2 End If
  • 25.
    E.1 Các lệnhcơ bản – If… then… If condition1 Then 'Statements ElseIf condition2 Then Statements Else 'Statements End If
  • 26.
    E.1 Các lệnhcơ bản – If… then… Form trong hình vẽ sau đây cho phép người sử dụng chọn lựa việc tính căn bậc hai hay ba: Sub cmdComputer_Click() If opgComputeType = 1 Then MySquarer txtInput.Value Else MyCuber txtInput.Value End If End Sub
  • 27.
    E.1 Các lệnhcơ bản – If… then… Sub MySquarer (Number As Double ) dblResult = Number * Number MsgBox dblResult, vbInformation, _ &quot; What a silly example!“ End Sub Sub MyCuber (Number As Double ) Dim dblResult As Double dblResult = Number ^ 3 MsgBox dblResult, vbInformation, _ “Let’s play HL 2.0“ End Sub
  • 28.
    E.2 Mệnh đềlựa chọn Case Select Case test expression Case list-1 'Statements Case list-2 'Statements Case Else 'Statements End Select
  • 29.
    E.3 Các lệnhcơ bản – For…Next For counter = start To end [Step step ] [ statements ] [Exit For] [ statements ] Next [ counter ]
  • 30.
    E.3 Các lệnhcơ bản – For…Next Các câu lệnh For có thể lồng nhau: Result = 0 For I = 1 To 10 For J = 1 To 10 For K = 1 To 10 Result = Result + I – J + K Next K Next J Next I Bài tập: Result = ???
  • 31.
    E.3 Các lệnhcơ bản – For…Next Result ? 0 55 1000 5500 I & J triệt tiêu nhau. K được tính 1000 lần = 100 *(1 + 2+…+10) = 5500
  • 32.
    E.4 Các lệnhcơ bản – For Each… For Each element In group [ statements ] [ Exit For ] [ statements ] Next [ element ]
  • 33.
    E.4 Các lệnhcơ bản – For Each… For Each c in worksheets(&quot;Sheet1&quot;).Range(&quot;A1:D10&quot;) If c.Value < .001 Then c.Value = 0 End If Next c Lặp trong vùng A1:D10, trong Sheet1, thay giá trị trong ô nhỏ hơn 0.001 bằng 0.
  • 34.
    E.5 Các lệnhcơ bản- Vòng lặp Do… Do [{ While | Until } condition ] [ statements ] [ Exit Do ] [ statements ] Loop
  • 35.
    E.5 Các lệnhcơ bản- Vòng lặp Do… Do [ statements ] [ Exit Do ] [ statements ] Loop [{ While | Until } condition ]
  • 36.
    F. Các hàmcó sẵn–Built in function Sum, Count, RGB, FV, NPV, CreateObject, GetObject, SysCmd Các hàm khác Xử lý chuỗi, văn bản Left, Right, Mid, Trim, UCase, LCaseStrReverse, Replace, InStr, InStrReverse Văn bản Gửi thông báo và nhận dữ liệu MsgBox , InputBox Thông điệp Thực hiện các phép toán Rnd, Sqr, Exp, Log, Sin, Cos, Tan Hàm toán học Xác nhận kiểu của các biến IsDate, IsTime, IsNumeric, IsNull, IsEmpty,VarType Hàm kiểm tra kiểu Bẫy lỗi và định nghĩa các lỗi do người sử dụng Error , CVErr , IsError Hàm xử lý lỗi Thống kê, tổng hợp kết quả theo từng miền DLookup, DCount, DSum, DAvg, DVar Hàm theo miền Tính toán với ngày tháng và giờ. Date, Now, DateAdd, DatePart, DateDiff, Year, Month, Day, Hour, Minute, Second, Weekday, DateValue, DateSerial, MonthName, WeekdayName, FormatDateTime Date/time Xác đỉnh, và đổi kiểu các biến CDbl , CSng , CInt , CCur , CDec, Str , Val, Hex , Oct Hàm chuyển đổi Tác dụng Tên hàm Danh mục
  • 37.
    Tìm Hiểu VBAQua Ví dụ Ví dụ 1: Kiểm tra dữ liệu – Data Validation
  • 38.
    Tìm Hiểu VBAQua Ví dụ Ví dụ 1: Kiểm tra dữ liệu – Data Validation
  • 39.
    Kiểm tra dữliệu - Data Validation Private Sub Form_BeforeUpdate(Cancel As Integer ) If IsNull(Diachiemail) Then If MsgBox(&quot;Ban da khong nhap dia chi email. Van luu lai chu?&quot;,_ vbYesNo + vbQuestion, ApplicationName) = vbNo Then Cancel = True Diachiemail.SetFocus End If End If End Sub
  • 40.
    Ví dụ 2:Bẫy lỗi - Errors trapping
  • 41.
    Ví dụ 2:Bẫy lỗi - Errors trapping
  • 42.
    Ví dụ 2:Bẫy lỗi - Errors trapping Private Sub Form_Error(DataErr As Integer , Response As Integer ) Select Case DataErr Case 2237 Call MsgBox(&quot;Sinh vien khong co trong tep.&quot; & _ &quot;Hay kiem tra chinh ta va nhap lai chinh xac, hoac kich&quot; & _ &quot;nut Them de nhap mot ban ghi moi&quot;, vbExclamation, ApplicationName) Response = acDataErrContinue Case 3022 Call MsgBox(&quot;Ban dang co them mot sinh vien co&quot; & _ &quot;so chung minh thu da co trong tep roi. Xin hay&quot; & _ &quot;sua lai so chung minh thu hoac huy bo ban ghi nay&quot; & _ &quot;va chuyen toi ban ghi ban dau&quot;, vbExclamation, ApplicationName) Case Else Response = acDataErrDisplay End Select End Sub
  • 43.
    Ví dụ 3:Tạo Shortcut
  • 44.
    Ví dụ 3:Tạo Shortcut
  • 45.
    Ví dụ 3:Tạo Shortcut Private Sub Form_KeyDown(KeyCode As Integer , Shift As Integer ) 'Thuoc tinh Key Preview cua form phai dat la Yes If KeyCode = vbKey1 And Shift = acCtrlMask Then 'Ctrl + 1 Thanhpho = &quot;Ha Noi&quot; Tinh = &quot;HN&quot; Dienthoaitruong = SetFocus End If If KeyCode = vbKey2 And Shift = acCtrlMask Then 'Ctrl + 2 Thanhpho = &quot;Vinh&quot; Tinh = &quot;NA&quot; Dienthoaitruong = SetFocus End If End Sub
  • 46.
    Tổng kết Giớithiệu về VBA. Các khái niệm cơ bản trong VBA. Objects Properties & Methods Procedures & Modules Soạn thảo mã lệnh với VBE. Mệnh đề logic, cấu trúc lặp... Các hàm có sẵn trong VBA Ví Dụ, ví dụ và vÍ dỤ . Bẫy Kiểm tra dữ liệu – Data Validation lỗi – Errors trapping Tạo phím tắt
  • 47.
    References Hệ quảntrị cơ sở dữ liệu Access – Giáo trình khoa CNTT ĐHQG Hà Nội. Microsoft Visual Basic for Applications 6.0 Software Development Kit Access 97 – Nguyễn Văn Ất – Nhà xuất bản văn hóa thông tin Programming Microsoft Access 2000 – Rick Dobson – Microsoft Press 1999 MSDN Libary – April 2000 Microsoft Access Help. Advanced Access tutorial – Vander Kulk .
  • 48.
    Thank you foryour participation! The End.