Những thành phần cơ bản trong ngôn ngữ VBA

Một phần của tài liệu Tài liệu Tài liệu hướng dẫn giảng dạy - Chứng chỉ tin học quốc gia trình độ B pdf (Trang 46 - 64)

và cách vận dụng VBA trong việc tạo các chức năng xử lý trên màn hình. Sau khi kết thúc bài học, học viên có thể:

9 Hiểu một số khái niệm và cơ chế xử lý của ngôn ngữ lập trình VBA. 9 Sử dụng ngôn ngữ VBA để thực hiện xử lý tính toán.

I. Môi trường lập trình trong Microsoft Access Microsoft Access

II. Những thành phần cơ bản trong ngôn ngữ VBA trong ngôn ngữ VBA

Chứng chỉ B Tin Học Quốc Gia Trang 46/131

I. Môi trường lập trình trong Microsoft Access

Trong bài học trước ta đã tìm hiểu về đối tượng Form của Access, một đối tượng quan trọng trong việc xây dựng các màn hình làm việc, tuy nhiên ta chỉ mới tìm hiểu các bước để hiển thị dữ liệu trên màn hình.

Màn hình làm việc ngoài khả năng hiển thị dữ liệu cho người dùng còn phải đáp ứng được nhu cầu về xứ lý tính toán, cập nhật thông tin của dữ liệu. Để xây dựng những thao tác xử lý trên màn hình được dễ dàng và nhanh chóng ta cần sự hỗ trợ của ngôn ngữ lập trình, gọi là VBA – Visual Basic for Application.

VBA là một ngôn ngữ lập trình được nhúng vào trong bộ Office của Windows dựa trên ngôn ngữ lập trình Visual Basic, một trong những ngôn ngữ lập trình mạnh nhưng dễ học và dễ sử dụng.

Sau đây ta sẽ tìm hiểu một số thành phần liên quan đến ngôn ngữ lập trình VBA trong Microsoft Access.

I.1. Cơ chế lập trình Thủ tục – Sự kiện

Ví dụ:

Yêu cầu: Thiết kế một màn hình cho phép nhập vào hai giá trị A và B, chương trình sẽ tính tổng hai số nhập vào và xuất kết quả. Yêu cầu là khi click vào nút Tính tổng thì kết quả sẽ được tính toán và xuất vào Text Box Tổng.

Để thực hiện yêu cầu này ta thực hiện các bước sau theo mô tả sau: ƒ Chọn sự kiện On Click của nút Tính tổng

ƒ Vào vùng viết lệnh của sự kiện On Click để thực hiện câu lệnh cộng hai số

Qua phần mô tả trên, ta cần chú ý một số điểm khi viết lệnh xử lý cho yêu cầu màn hình: ƒ Mọi yêu cầu về tính toán xử lý đều dựa trên việc tác động vào một điều khiển nào đó

trên Form, trong ví dụ trên là khi click vào nút Tính tổng. Do đó, để thực hiện được yêu cầu ta phải xác định điều khiển nào sẽ dùng để viết các lệnh xử lý.

ƒ Sau khi chọn được điều khiển thì ta phải tìm được thời điểm để thực hiện xử lý yêu cầu. Đây chính là điểm quan trọng khi thực hiện các thao tác xử lý trên màn hình.

Chứng chỉ B Tin Học Quốc Gia Trang 47/131

Như ta đã biết thì khi có một tác động lên điều khiển thì điều khiển có thể phát sinh hàng loạt những sự kiện một cách tuần tự. Vấn đề ở đây là phải chọn sự kiện nào thích hợp nhất để xử lý.

Những sự kiện của điều khiển luôn tồn tại và ta có thể sử dụng một hay nhiều sự kiện phù hợp với yêu cầu. Mỗi sự kiện sẽ luôn có một thành phần xử lý đi kèm gọi là thủ tục của sự kiện. Thủ tục của sự kiện là thành phần do ngôn ngữ lập trình VBA phát sinh tự động, để thực hiện xử lý ta phải thực hiện thao tác chọn thủ tục của sự kiện cần và viết các lệnh bên trong thủ tục đó.

Cơ chế lập trình Thủ tục - Sự kiện chính là chọn sự kiện của điều khiển và viết lệnh xử lý trong thủ tục do sự kiện phát sinh. Những lệnh trong thủ tục sẽ được thực thi khi có sự tác động lên điều khiển làm phát sinh ra sự kiện.

I.2. Cửa sổ viết lệnh cho các xử lý trong thủ tục của sự kiện

Để thực hiện việc xử lý cho các sự kiện của điều khiển ta cần chọn thủ tục tương ứng với sự kiện, sau đó viết những lệnh xử lý cần thiết trong thủ tục chọn được.

Công việc thiết kế các điều khiển của Form được thực hiện trong cửa sổ thiết kế Design View của nó, còn để viết lệnh cho sự kiện ta sẽ vào cửa sổ Code của ngôn ngữ VBA. Từ cửa sổ Design View muốn vào cửa sổ Code ta chỉ cần click vào nút trên thanh chứa các thành phần thiết kế Form. Khi đó, ta sẽ chuyển sang một cửa sổ có dạng như sau:

Từ cửa sổ Code ta có thể quay về cửa sổ Design View của Form bằng cách click vào nút trên công cụ của cửa sổ Code.

Cửa sổ trên chính là nơi mà ta thực hiện viết các lệnh xử lý cho điều khiển. Như đã trình bày ở trên thì để thực hiện một thao tác xử lý trên màn hình thì ta phải xác định được hai yếu tố là Điều khiển cần xử lý và Thời điểm (sự kiện) được chọn để thực hiện các lệnh xử lý. Cửa sổ

Chứng chỉ B Tin Học Quốc Gia Trang 48/131

Code cung cấp cho ta cách để chọn hai thành phần đó.

Trong hình trên, ta thấy có một Combo Box chứa chữ General, danh sách của Combo sẽ chứa tất cả tên của điều khiển hiện có trên màn hình đang làm việc. Để chọn điều khiển cần xử lý ta chỉ cần click vào Combo và chọn tên của điều khiển tương ứng. (adsbygoogle = window.adsbygoogle || []).push({});

Khi đó, trong vùng viết lệnh ở bên dưới sẽ tự động phát sinh ra một khai báo thủ tục xử lý cho một sự kiện bất kỳ.

Ví dụ:

Khi ta chọn một điều khiển Command Button có tên là cmdTest thì khi đó vùng lệnh sẽ tự động phát sinh ra thủ tục xử lý cho sự kiện On Click của điều khiển như hình trên, thủ tục có tên là

cmdTest_Click.

Ta có thể chọn sự kiện khác để xử lý bằng cách click chọn tên của sự kiện ở Combo Box ở bên phải của Combo chứa tên điều khiển. Ở trạng thái ban đầu thì giá trị của Combo là Delarations như hình trên. Combo này chứa tất cả tên của những sự kiện có thể phát sinh ứng với đối tượng đang được chọn. Sau khi chọn sự kiện mới thì trang Code sẽ tự động phát sinh thủ tục ứng với sự kiện vừa chọn.

Sau khi đã xác định được hai thành phần là điều khiển và sự kiện thì ta có thể viết các lệnh xử lý cần thiết. Một số điểm lưu ý khi viết các lệnh xử lý:

ƒ Toàn bộ nội dung xử lý sự kiện của điều khiển sẽ nằm trong phạm vi thủ tục được phát sinh, tức là bắt đầu từ Private Sub cho đến End Sub.

ƒ Các lệnh xử lý được viết theo cú pháp của ngôn ngữ VBA, ta sẽ tìm hiểu ngôn ngữ này ở phần dưới

Khi đã hoàn tất các lệnh xử lý theo yêu cầu, muốn kiểm tra nội dung các câu lệnh thì ta phải quay trở lại màn hình Design của Form và chuyển sang chế độ Form View, sau đó tác động lên điều khiển để nó phát sinh ra sự kiện mà ta đã xử lý để kiểm tra kết quả viết lệnh.

Ngoài ra, ta còn có thể sử dụng trang sự kiện trong cửa sổ Property của điều khiển trong cửa sổ Design View để chọn sự kiện của điều khiển cần xử lý và mở thủ tục ứng với sự kiện để viết lệnh.

Chứng chỉ B Tin Học Quốc Gia Trang 49/131

Để chọn sự kiện cần xử lý của điều khiển trong cửa sổ Design View ta làm như sau: ƒ Mở cửa sổ thuộc tính của điều khiển cần

xử lý sự kiện.

ƒ Click chọn trang Event của cửa sổ, trang thứ 3. Cửa sổ Event sẽ liệt kê tất cả những sự kiện mà điều khiển có thể phát sinh. Bên trái là tên của các sự kiện, bên phải chứa kiểu lệnh mà ta sẽ xử lý cho sự kiện.

ƒ Tại dòng của sự kiện cần xử lý, click vào Combo Box và chọn giá trị: [Event Procudure] để khai báo kiểu viết lệnh cho sự kiện là dùng thủ tục của ngôn ngữ VBA.

ƒ Click vào nút để mở cửa sổ Code chứa thủ tục của sự kiện, các thao tác trong cửa sổ tương tự như đã trình bày ở trên.

II. Những thành phần cơ bản trong ngôn ngữ VBA

Khi làm việc với môi trường phát triển ứng dụng thì ta cần tìm hiểu ngôn ngữ mà nhà cung cấp tích hợp vào cùng với môi trường. Trong bộ Office của Microsoft đó chính là ngôn ngữ VBA, một ngôn ngữ rất dễ học và dễ sử dụng để xây dựng những phần mềm quản lý.

II.1. Đặc điểm của ngôn ngữ VBA

VBA viết tắt là Visual Basic for Application là một ngôn ngữ lập trình giống với những ngôn ngữ lập trình khác như Pascal, C, Visual Basic, Visual C, … và được Microsoft tích hợp vào bộ Microsoft Office, nghĩa là ta có thể sử dụng ngôn ngữ VBA sau khi cài đặt bô Microsoft Office mà không cần thêm phần mềm nào khác.

Đặc điểm quan trọng nhất của VBA là ngôn ngữ được xây dựng theo cơ chế lập trình Thủ tục – Sự kiện. Như đã trình bày ở trên thì khi điều khiển của màn hình bị tác động thì nó sẽ phát sinh ra sự kiện, ứng với sự kiện phát sinh sẽ có một thủ tục để xử lý sự kiện đó và nội dung viết trong thủ tục sẽ là cú pháp của ngôn ngữ VBA. Qua đó, ta thấy rằng ngôn ngữ VBA được viết dựa trên sự phát sinh sự kiện của điều khiển, người ta gọi đó là ngôn ngữ lập trình

hướng Thủ tục - Sự kiện.

Trong ngôn ngữ lập trình có một khái niệm gọi là câu lệnh. Một câu lệnh đó là một chuỗi có được từ sự kết hợp của nhiều ký tự theo qui luật của ngôn ngữ lập trình. Mỗi câu lệnh phải nằm trên một dòng, đối với VBA thì trên một dòng có thể có nhiều câu lệnh khác nhau nhưng không nên sử dụng vì khó nhìn và khó sửa lỗi.

Chứng chỉ B Tin Học Quốc Gia Trang 50/131

thủ tục hay một cấu trúc điều khiển. Khối lệnh mà ta thường gặp nhất đó chính là thủ tục xử lý cho sự kiện.

Trong một màn hình thì có thể có nhiều khối lệnh để xử lý cho những sự kiện của các điều khiển khác nhau. Những khối lệnh này thực thi độc lập và có thể lập lại nhiều lần ứng với số lần phát sinh sự kiện.

Khi khối lệnh của một thủ tục được thực thi, khi tác động vào điều khiển phát sinh ra sự kiện, thì nó sẽ thi hành từ câu lệnh đầu tiên của khối cho đến câu lệnh cuối cùng có trong khối lệnh đó, các câu lệnh thực hiện một cách tuần tự.

Như đã đề cập ở trên thì khi viết lệnh ta phải tuân theo các qui luật của ngôn ngữ VBA. Tuy nhiên trong quá trình viết lệnh có thể vô tình mà ta viết sai cú pháp qui định, khi di chuyển sang một dòng khác cửa sổ viết lệnh của VBA sẽ thông báo cú pháp của câu lệnh vừa viết là sai và tự động đổi màu của câu lệnh sai sang màu đỏ (ta có thể thay bằng màu khác). Đây là một hỗ trợ rất hữu ích khi viết lệnh, nó làm giảm đáng kể những lỗi về mặt cú pháp của chương trình.

Tuy VBA hỗ trợ rất tốt việc phát hiện lỗi cú pháp khi viết lệnh tuy nhiên có một số lỗi cú pháp về mặt ngữ nghĩa hay những lỗi về logic chỉ phát sinh khi thực thi chương trình thì ngôn ngữ không thể giúp ta được. Khi đó, việc xử lý lỗi phải dựa vào kinh nghiệm và suy luận của người lập trình. Nhằm giúp người lập trình dễ dàng hơn trong việc xử lý lỗi, VBA cung cấp một tiện ích gọi là Debug, tiện ích này giúp ta chạy lần lượt qua từng câu lệnh để phát hiện và xử lý lỗi.

II.2. Biến (adsbygoogle = window.adsbygoogle || []).push({});

Biến được dùng để chứa những giá trị tạm thời khi chương trình đang được thực thi, phục vụ cho việc xử lý tính toán

II.2.1. Khai báo biến

Muốn sử dụng được biến trong đoạn lệnh ta phải thực hiện thao tác khai báo biến với hệ thống. Để khai báo biến ta sử dụng cú pháp sau:

Dim TenBien As Kiểu dữ liệu

Trong cú pháp trên thì Dim và As gọi là từ khoá của ngôn ngữ VBA, là những từ được sử dụng cho mục đích viết lệnh trong ngôn ngữ, ta có thể sử dụng bất kỳ lúc nào khi cần nhưng phải theo đúng cú pháp.

TenBien là thành phần định danh dùng để phân biệt giữa các biến. Nội dung của tên biến

thường thể hiện ý nghĩa sử dụng của nó. Tên biến có thể chứa nhiều loại ký tự khác nhau nhưng trừ một số ký tự đặt biệt cùng với một số qui tắc:

ƒ Không có khoảng trắng ƒ Không được bắt đầu là số

Chứng chỉ B Tin Học Quốc Gia Trang 51/131

ƒ Không được trùng với những khoá của ngôn ngữ, ví dụ: Dim, As, To, For, … ƒ Không chứa các ký tự dấu như: “, ~, #, +, -, *, /, [], …

Kiểu dữ liệu chính là giá trị mà biến đó có thể lưu trữ tạm thời. Trong thực tế ta có những giá

trị ở dạng Chuỗi, Số, Ngày, Giờ,… để lưu trữ những giá trị đó trong máy tính thì ta phải dựa vào hệ thống những kiểu dữ liệu do ngôn ngữ VBA cung cấp

Tên kiểu dữ liệu Kích thước (Byte) Giá trị lưu trữ tương ứng

Byte 1 Integer 2 Long 4 Các số nguyên Single 4 Double 8 Các số thực Currency 8 Tiền tệ

Boolean 2 Lưu trữ giá trị đúng hoặc sai

Date 8 Ngày giờ

String 1 (Cho mỗi ký tự) Chuỗi, văn bản

Variant 16 + 1 (Cho mỗi ký tự) Bao gồm tất cả loại giá trị

Một điểm cần lưu ý khi khai báo biến đó là tên của biến phải hợp lệ và kiểu dữ liệu ứng với giá trị mà biến sẽ lưu trữ.

II.2.2. Sử dụng biến

Sử dụng biến ở đây có hai nghĩa: cất giá trị cần lưu vào biến và lấy giá trị mà một biến đang lưu để xử lý tính toán.

Sau khi đã khai báo biến, ta có thể lưu trữ giá trị cần thiết vào biến. Việc đưa giá trị vào biến gọi là thao tác gán giá trị, để gán giá trị cho biến ta sử dụng một trong hai cú pháp sau:

TenBien = Giá trị cần gán (1) TenBien = TenBien1 (2)

TenBien = TenBien1 + TenBien2 (3)

Để gán giá trị cho biến thì tên của biến sẽ luôn nằm bên trái dấu bằng, giá trị cần lưu trữ vào biến sẽ nằm bên phải.

Giá trị đưa vào biến phải có kiểu dữ liệu phù hợp với kiểu dữ liệu của biến nhận giá trị gán, ví dụ một biến có kiểu số thì không thể nhận một giá trị chuỗi.

Giá trị gán vào biến có thể là một hằng số cụ thể, cú pháp (1), từ một biến khác, cú pháp (2) hay cũng có thể là một biểu thức tính toán, cú pháp (3).

Cú pháp (2) cũng chính là cách sử dụng giá trị được lưu trữ trong biến, nó thể hiện thao tác gán giá trị cho bến có tên là TenBien đồng thời sử dụng giá trị của biến có tên TenBien1.

II.2.3. Phạm vi sử dụng của biến

Khi cần sử dụng biến thì ta sẽ thực hiện việc khai báo chúng và vị trí mà một biến được khai báo chỉ có thể là trong vùng General của cửa sổ lệnh hay là trong vùng của một hàm/thủ tục. (adsbygoogle = window.adsbygoogle || []).push({});

Chứng chỉ B Tin Học Quốc Gia Trang 52/131

Vị trí khai báo biến ảnh hưởng đến phạm vi sử dụng của nó. Phạm vi sử dụng là nơi mà một biến còn có thể sử dụng, ta có hai khái niệm là biến cục bộ và biến toàn cục.

Khi một biến được khai báo trong vùng của một thủ tục thì nó có phạm vi sử dụng cục bộ, nghĩa là biến đó chỉ có ý nghĩa sử dụng với những lệnh trong thủ tục mà nó được khai báo. Một điểm cần lưu ý là trong cùng một phạm vi sử dụng ta không được khai báo biến có tên giống nhau, và ở những phạm vi khác nhau có thể có những biến trùng tên.

Nếu muốn sử dụng một biến dùng chung cho tất cả các thủ tục của màn hình thì ta phải khai báo biến đó trong vùng General của cửa sổ lệnh, gọi là biến toàn cục. Biến này sẽ có thể sử

Một phần của tài liệu Tài liệu Tài liệu hướng dẫn giảng dạy - Chứng chỉ tin học quốc gia trình độ B pdf (Trang 46 - 64)