Chương 1: Ngôn ngữ Visual Basic For Application

1. Giới thiệu Visual Basic for Application – VBA:

VBA là ngôn ngữ lập trình cho Microsoft Office và các ứng dụng có liên kết với nó. Bạn sử dụng tương tự như tập lệnh để có thể liên kết các đối tượng trong ứng dụng của bạn lại với nhau nhằm tạo thành một hệ thống chương trình hoàn chỉnh. Điểm khác biệt là VBA cung cấp nhiều sức mạnh và mềm dẻo hơn là tập lệnh.
Bạn có thể sử dụng VBA thay thế tập lệnh khi thực hiện các công việc sau:

  • Làm cho ứng dụng của bạn dễ bảo trì hơn.
  • Tạo ra các hàm tính toán của riêng mình, phù hợp với từng ứng dụng cụ thể.
  • Che đi các thông báo lỗi của hệ thống, tạo các thông báo lỗi bằng tiếng việt dễ hiểu hơn chon người sử dụng ứng dụng quản lý.
  • Tạo hoặc sửa đổi các đối tượng một cách linh hoạt.
  • Thực hiện các hành động cấp hệ thống, trao đổi dữ liệu động, các hàm, thư viện liên kết động của Windows.
  • Truy cập vào các tập hợp mẫu tin, gởi các tham số động.
    Vì vậy khi xây dựng một ứng dụng quản lý chúng ta có thể kết hợp linh koạt vừa dùng tập lệnh và VBA, tuy nhiên dùng VBA thì có nhiều ưu điểm hơn như trên.

2. Tạo một thủ tục sự kiện – Event Procedure:

Thủ tục là các đoạn lệnh mà bạn đã viết bằng ngôn ngữ VBA, bên trong một thủ tục sẽ chứa đựng một dãy các câu lệnh của VBA dùng để thực hiện một hành động hoặc tính toán ra một giá trị nào đó.
Một thủ tục sự kiện là một thủ tục sẽ được chạy để đáp lại cho một sự kiện xảy ra. Xem một ví dụ sau:

B1: Tạo một form có giao diện như trên, dùng các control là: Label, textbox, command button.
B2: Đặt tên cho các control textbox lần lượt là: txtA, txtB, txtKQ, các nút lệnh lần lượt là: cmdCong, cmdXoa, cmdThoat.
B3: Viết code sự kiện tương ứng cho các nút lệnh trên thực hiện phép cộng như sau:

3. Làm việc với bộ mã lệnh của biểu mẫu hoặc báo cáo:

  • Mở biểu mẫu ở chế độ thiết kế – Design
  • Hiển thị bảng thuộc tính tương ứng – Properties
  • Chọn trang Event
  • Chọn sự kiện thích hợp, nhấn nút xây dựng … bên phải thuộc tính sự kiện
  • Tiến hành viết các đoạn code tương ứng cho sự kiện.

4. Tạo hàm đầu tiên:

Nếu chúng ta thường dùng một biểu thức tính toán giống nhau cho nhiều biểu mẫu hay báo cáo, và biểu thức này tương đối phứt tạp thì chúng ta nên xây dựng một hàm chung, để tại một vị trí bất kỳ nào đó mà tất cả biểu mẫu hay báo cáo đều có thể dùng chung được. Khi viết một hàm dùng chung này có các điểm thuận lợi như sau:

  • Giá trị tính toán của các biểu mẫu giống nhau hoàn toàn
  • Nếu cần thay đổi biểu thức tính toán thì chỉ sửa tại một chỗ mà thôi
  • Khi thực hiện các phép tính phức tạp có thể sử dụng thêm các cấu trúc điều khiển một cách thuận lợi hơn.

Tạo mới một hàm:
Trong cửa sổ cơ sở dữ liệu, chọn đối tượng làm việc là modules, nhấn nút new để tạo một bộ mã lệnh chuẩn.
Trong cửa sổ mã lệnh chọn Insert – Procedure hoặc viết trực tiếp thủ tục, hàm vào cửa sổ lệnh.
Biên dịch thủ tục, hàm:
Sau khi viết xong các đoạn lệnh trong hàm, thủ tục chúng ta cần biên dịch để access kiểm tra các sai sót ngoài ý muốn khi ta lập trình, chọn Debug – Compile.
Sử dụng các hàm:

Nếu chúng ta đã xây dựng hoàn chỉnh một hàm thì chúng ta có thể gọi sử dụng được nó tại các vị trí sau:

  • Trong các thủ thục hay hàm khác
  • Như là một biểu thức tính toán, một hàm đã xây dựng có sẵn

5. Tên mặc định và tầm ảnh hưởng của các loại thủ tục:

Vị trí tại Tên thủ tục hoặc hàm Có ảnh hưởng
Biến cố của biểu mẫu Private Sub Form_tên biến cố()

Các lệnh

End Sub

Tại biến cố của biểu mẫu

 

Biến cố của điều khiển Private Sub Tên điền khiển_Tên biến cố()

Các lệnh

End Sub

Tại biến cố của điều khiển
Bộ mã lệnh của ứng dụng hoặc biểu mẫu Sub Tên thủ tục (các tham số)

Các lệnh

End Sub

 

Function Tên hàm(các tham số) as kiểu dliệu

Các lệnh

End Function

Phụ thuộc vào kiểu của thủ tục hay hàm là Public hay Private mà nó có ảnh hưởng toàn cục hay cục bộ.

 

6. Tạo và gọi các thủ tục:

Khái niệm thủ tục trong Access có thể là một thủ tục con – Sub Procedure hay một thủ tục hàm Function Procedure.
Thủ tục con: thực hiện các hành động nhưng không trả về một giá trị nào đó và không thể dùng trong các biểu thức. Thủ tục con có thể nhận các tham số vào, một thủ tục biến cố là thủ tục con được gắn vào với các biểu mẫu hoặc báo cáo.
Thủ tục hàm: trả về một giá trị, chẳng hạn như kết quả của một phép tính, vì chúng sẽ trả về giá trị do đó các thủ tục hàm được dùng trong các biểu thức tính toán.

[Public | Private] Sub Tên thủ tục ([Các tham số])
<các lệnh>
End sub

[Public | Private] Function Tên hàm ([Các tham số]) as <kiểu dữ liệu trả về>
<các lệnh>
Tên hàm= giá trị trả về
End Function

7. Sử dụng biến:

Trong quá trình xử lý tính toán bên trong VBA, chương trình cần phải sử dụng một số biến trung gian để lưu trữ giá trị khi tính toán. Các giá trị dữ liệu mà biến lưu trữ cũng giống như giá trị mà bảng lưu trữ, tuy nhiên giá trị của các biến này sẽ bị mất đi khi ứng dụng của chúng ta chấm dứt hoạt động. Chúng ta nên khai báo các biến trước khi sử dụng bằng từ khoá Dim.

8. Qui ước cách đặt tên các thành phần trong VBA:

Trong quá trình viết các đoạn lệnh trong ngôn ngữ VBA chúng ta sẽ khai báo, đặt tên cho các thành phần: Thủ tục con, thủ tục hàm, tên đối tượng, tên biến, hằng số… chúng ta phải tuân theo qui tắc sau đây:

  • Tên bắt đầu phải là một ký tự
  • Tên không được chứa các khoảng trắng và ký tự đặc biệt như: . , ! @ & $ #
  • Tên có độ dài tối đa 255 ký tự
  • Không chứa các từ khoá của ngôn ngữ VBA

9. Sử dụng đối tượng Docmd – Do Command:

Trong khi sử dụng ngôn ngữ VBA chúng ta có thể thực hiện các hành động tương ứng trong công cụ tập lệnh bằng cách sử dụng các phương thức của đối tượng Docmd.
Cú pháp chung:
Docmd. Tên phương thức [các tham số] Trong đó:

  • Tên phương thức: danh sách các phương thức tương ứng với các hành động trong tập lệnh.
  • Các tham số: các tham số tương ứng của một phương thức.

Vd: Docmd.Close acForm, “F_SinhVien”

10. Các cấu trúc điều khiển chương trình:

Các cấu trúc điều khiển là các cấu trúc cho phép người lập trình có thể điều khiển thứ tự vận hành của các câu lệnh bên trong chương trình khi chúng được thực hiện.
Bình thường nếu không sử dụng cấu trúc điều khiển thì các câu lệnh sẽ được thực hiện tuần tự từ trên xuống dưới.
VBA cũng là ngôn ngữ lập trình như bao ngôn ngữ khác nó cung cấp cho chúng ta các cấu trúc điều khiển sau:
Cấu trúc nếu … thì If … then:
Cấu trúc này cho phép chúng ta kiểm tra một điều kiện đúng hay sai, khi đó sẽ thực hiện các hành động tương ứng. Đối với cấu trúc IF có các dạng cú pháp như sau:
C1: If <điều kiện> Then <lệnh>
ý nghĩa: Nếu biểu thức điều kiện đúng thì có 1 lệnh được thực hiện.

C2: If <điều kiện> Then
<các lệnh>
End if
ý nghĩa: Nếu biểu thức điều kiện đúng thì có các lệnh được thực hiện.

C3: If <điều kiện> Then
<các lệnh 1>
Else
<các lệnh 2>
End if
ý nghĩa: Nếu biểu thức điều kiện đúng thì các lệnh 1 được thực hiện, ngược lại đk sai thì các lệnh 2 được thực hiện.

C4: If <điều kiện 1> Then
<các lệnh 1>
Else If <điều kiện 2> then
<các lệnh 2>…
End if
ý nghĩa: Nếu biểu thức điều kiện 1 đúng thì các lệnh 1 được thực hiện, nếu đk 1 sai và đk 2 đúng thì các lệnh 2 thực hiện, cú tiếp tục như vậy cho đến đk thứ n… thì các lệnh thứ n được thực hiện.
Hoặc:
If Typeof <tên biến> Is kiểu dữ liệu Then
<các lệnh>
End if
Y nghĩa: Nếu loại dữ liệu của một biến là kiểu gì thì các lệnh sẽ được thực hiện.
Chú ý: Thông thường các điều kiện là các biểu thức so sánh, chứa các toán tử so sánh như: >, <, >=, <= … và các giá trị cần so sánh, khi đó nó sẽ trả về một giá trị logic là đúng hay sai. VBA cũng có thể hiểu được giá trị 0 là sai, khác 0 là đúng.
Ví dụ: kiểm tra một số là số chẳn hay lẻ
If (num mod 2) = 0 Then
Msgbox “Là số chẳn”
Else
Msgbox “Là số lẻ”
End if
Cấu trúc chọn lựa Select Case:
Cú pháp tổng quát:
Select case <biến hoặc biểu thức>
Case giá trị 1
<các lệnh 1>
Case giá trị 2
<các lệnh 2>…
Case else
<các lệnh n>
End select
Y nghĩa: nếu giá trị của biến hay biểu thức nằm trong giá trị 1 thì các lệnh 1 sẽ được thực hiện, cứ tiếp tục đến giá trị thứ n thì các lệnh thứ n thực hiện.
Ví dụ: xét một số Num nằm trong miền giá trị nào:

Select case Num
Case 1
Msgbox “Num là số 1”
Case 2 to 5
Msgbox “Num là số từ 2 đến 5”
Case 6, 7, 8
Msgbox “Num là số 6 hay 7 hay 8”
Case is >8
Msgbox “Num là số >8”
Case else
Msgbox “Num là số <1”
End select

Cấu trúc lặp:
Khi một công việc nào đó được làm đi làm lại nhiều lần thì khi đó chúng ta gọi là khái niệm lặp. Tuy nhiên số lần lặp thực tế này có xác định được trước hay không, vì vậy VBA chia ra 2 dạng vòng lặp:
+ Số lần lặp không xác định trước:
Cú pháp : Do … loop
Do [ while | Until <điều kiện> }
<các lệnh>
[exit do] Loop

Hoặc:
Do
<các lệnh>
[exit do] Loop [while | Until <điều kiện>]

+ Số lần lặp được xác định trước:
Cú pháp: For … Next
For biến= giá trị 1 To giá trị 2 [bước nhảy] <các lệnh>
[exit for] Next [biến] Hoặc:
For Each phần tử In nhóm
<các lệnh>
[exit for] Next [phần tử]

Ví dụ: In ra dãy số nguyên từ 1 đến 10
C1: Dùng vòng lặp For … Next
Dim I as integer
For i=1 to 10 ‘cho I chạy tăng dần từ 1 đến 10
Debug.print i
Next i

C2: Dùng vòng lặp Do … While
Dim I as integer
I=1
Do while i<=10 ‘làm trong khi i<=10
Debug.print i
I=i+1
Loop

C3: Dùng vòng lặp Do … Until
Dim I as integer
I=1
Do Until i>10 ‘làm cho đến khi i>10
Debug.print i
I=i+1
Loop

Cấu trúc điều khiển lồng vào nhau:
Trong quá trình viết các đoạn lệnh để giải quyết các vấn đề phứt tạp ta có thể lồng nhiều câu lệnh điều khiển vào nhau để giúp linh hoạt giải quyết được yêu cầu của công việc.
Thoát khỏi thủ tục, vòng lặp:
Khi lập trình không nhất thiết các đoạn lệnh trong một thủ tục hay vòng lặp phải thực hiện tất cả, mà đôi khi chỉ cần vừa đủ để giải quyết vấn đề xong là có thể thoát khỏi thủ tục hay hàm mà không cần làm hết những lệnh còn lại. Để thoát khỏi thủ tục dùng lệnh Exit Sub, khỏi hàm dùng Exit Function, khỏi vòng lặp dùng Exit For, Exit Do.

11. Các kiểu dữ liệu cơ bản:

Khi khai báo một biến thì bạn phải khai báo kiểu dữ liệu mà biến cần lưu trữ. Mặc định nếu bạn không khai báo kiểu dữ liệu cho biến hoặc khai báo biến không tường minh thì kiểu dữ liệu của biến đó sẽ là kiểu thay đổi được Variant.

Tên Y nghĩa lưu trữ Miền giá trị Số byte
Byte Số nguyên 0 -> 255 1 byte
Boolean Logic 0:false, -1:true 1
Integer Số nguyên -32.768 -> 32.767 2
Long Số nguyên -2.147.483.648 -> 2.147.483.647 4
Currency Số thực -922.337.203.685.774,5808 ->

922.337.203.685.774,5807

8
Single Số thực Rất lớn 4
Double Số thực Rất lớn 8
Date Ngày 1/1/100 -> 31/12/9999 8
String Chuỗi Tối đa không quá 2 tỷ ký tự
Variant Bất kỳ dữ liệu gì 16
Object Chỉ định bất kỳ đối tượng nào 4

Các hàm hỗ trợ kiểm tra kiểu dữ liệu:

Hàm kiểm tra số: IsNumeric trả về true là số, false không phải là số
Hàm kiểm tra ngày: IsDate
Hàm kiểm tra giá trị rổng: Empty
Hàm kiểm tra giá trị Null: IsNull

Trung tâm tin học BẢO NGHIỆP Đào tạo tin học ứng dụng - Tin học kỹ thuật - Tin học mỹ thuật chuyên nghiệp Thường xuyên khai giảng khóa mới: tin học cơ bản, tin học nâng cao, Thiết kế đồ họa, Khóa học Corel, Khóa học Illustrator, Khóa học Photoshop, Khóa học Autoad, Khóa học 3d max, Khoa học thiết kế khuôn mẫu Creo/Prametric 3.0 ... Cơ sở 1: số 27 đường CN6, phường Sơn Kỳ, quận Tân Phú, TPHCM Cơ sở 2: 168 Trần thanh mại, Kp2, Phường tân tạo A, quận Bình Tân. TPHCM ĐT: 0989.13.58.13 

Trả lời

Email của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *

Hotline: 0989.13.58.13