Hình 1

Nếu trong một file Excel dùng để tính toán mà bạn cần sử dụng nhiều lần đến công thức để tính một công thức nào đó thì bạn nên tạo hàm để tính nhanh hơn và tiện lợi hơn.

Ví dụ trong trường hợp này, chúng ta sẽ tạo một hàm dùng đ tính diện tích một tam giác.

*** Sau đây là các bước tạo hàm "Heron" (không có dấu ngoặc kép) để tính diện tích tam giác khi biết 3 cạnh của tam giác theo công thức như hình 1.

     - Gọi lệnh Tools - Macro - Visual Basic Editor. (hay nhấn tổ hợp phím Alt + F11)
     - Excel sẽ mở cửa sổ màn hình biên soạn Microsoft Visual Basic.

     - Gọi lệnh Insert - Module. (Hình 2)
     - Bạn sẽ được 1 Module Sheet với ghi nhận là Book1 - Module1 (Code) trên Title

     -Gọi lệnh Insert - Procedure. (Hình 3)


Hình 2


Hình 3

     - Hộp thoại Add Procedure xuất hiện. Trong khung Name bạn gõ tên hàm là Heron. Dưới mục Type chọn Function, dưới mục Scope giữ nguyên Public. Nhấn OK. (Hình 4)
     Lưu ý: Tên hàm dài từ 1 đến 255 ký tự, khởi đầu phải là mẫu tự (A-Z), còn lại có thể là mẫu tự và số, không được có khoảng trắng hay dấu chấm câu.


Hình 4

     - Visual Basic sẽ ghi giúp bạn 2 dòng lệnh: Khởi đầu Public Function Heron() và kết thúc bằng  End Function, là mốc khởi đầu và kết thúc của một hàm. Các dòng giữa dành cho bạn tự biên soạn theo nhu cầu.

     - Giữa 2 hàm Public FunctionEnd Function bạn gõ nội dung của hàm Heron.

     - Gõ theo các đối số (A, B, C) phía sau tên hàm, đó là các tên tượng trưng cho các thông số (Symbolic Parameter) sẽ trao cho hàm. Các đối số phải cách nhau dấu phẩy, bất kể bạn chọn List Separator trong Control Panel là dấu gì.

     - Khi biên soạn, Visual Basic sẽ dò lỗi cú pháp tửng lệnh của bạn mỗi khi bạn Enter, và có thể thông báo ngay lỗi đó. Nếu đúng cú pháp, nó sẽ chỉnh lại khoảng cách giữa 2 từ, viết lại các từ khóa hay tên các hàm của Basic cho nghiêm chỉnh (Proper).

     - Các dòng lệnh có thể có các màu khác nhau:
        + Dòng lệnh đang bị lỗi:
màu đỏ
        + Dòng chú thích:
xanh lá cây
        + Các từ khóa (keyword):
xanh
        + Tên của biến và hàm: đen

QUY ƯỚC VỀ CÁCH GHI CÂU LỆNH

MINH HỌA

    - Trên một dòng, thường viết một lệnh. Ở cuối dòng, có thể ghi thêm chú thích, với điều kiện ghi thêm dấu nháy đơn, và sẽ có màu xanh lá cây.      Dim A, B, C AS Integer
     A = 0   
' Gán trị ban đầu
    - Nếu dấu nháy đơn ghi ở đầu dòng , trọn dòng đó chỉ là chú thích.      ' Chương trình tính diện tích tam giác
    - Nếu ghi nhiều lệnh trên cùng một dòng, phải cách nhau dấu hai chấm (:)      A = 0 : B = 12 : C = 1001
    - Nếu lệnh quá dài, có thể nối tiếp xuống dòng dưới, với điều kiện cuối dòng trên phải có một khoảng trắng và dấu gạch dưới.      Dim Can, Chi
     Can = Array ("Giáp", "Ất", "Bính", _
            "Đinh", "Mậu", "Kỷ", "Canh", _
            "Tân", "Nhâm", "Quý")

 *** Hàm tính diện tích tam giác được phát biểu như sau: Hàm Heron cần nhận 3 đối số A, B, C ứng với số đo 3 cạnh. Nếu số đo cạnh 1 mà lớn hơn tổng 2 cạnh kia thì là tam giác "dỏm" nên đáp số = 0, Ngược lại là tam giác "zin" nên đáp số được tính như sau: căn bậc 2 của (p * (p - a) * (p - b) * (p - c)) với p là nửa chu vi của tam giác được tính bởi công thức: p = (a + b + c) / 2.

     - Và bây giờ bạn đánh hàm như hình 5.


Hình 5

- Để kiểm tra lỗi cú pháp, hãy gọi lệnh Debug và chọn  Compile VBAProject. Nếu thấy nó nín khe thì bạn hãy mừng vì như vậy tức là không phát hiện được lỗi nào về cú pháp. (chỉ lỗi cú pháp thôi, còn giải thuật thì chưa). (Hình 6)

- Ngược lại, tùy hoàn cảnh, sẽ thông báo một tỷ thứ lỗi, ví dụ như một số lỗi sau:
 
Expect end of statement (phát biểu chưa kết thúc) - Variable not defined (biến không định nghĩa) - For without Next (For không có Next) - Next without For (Next không có For) - Expect: Then or GoTo (đáng lẽ phải có từ khóa Then hay GoTo) - Block If without End If (lệnh If thiếu End If) - Sub or Function not defined (tên hàm hay tên Sub không định nghĩa) - Vân... vân... và vân vân...


Hình 6

THỬ NGHIỆM HÀM

     - Gọi lệnh View - Immediate Window (hay nhấn Ctrl - G) (Hình 7).

     - Xuất hiện cửa sổ Immediate. Trong cửa sổ này bạn thử gõ ?Heron(3, 4, 5) và Enter. Nếu thấy ngay bên dưới hiện ra kết quả là 6 thì xin "cúng hỷ". Nếu nó cho ra kết quả tùm lum tào lao thì bạn chỉ có một nước là phải rà soát lại cho đến khi nào thành công. Thử tiếp như hình 8.

     ~~~ Bây giờ bạn có thể đóng cửa sổ Visual Basic lại và áp dụng hàm này vào các sheet của bạn bằng cách đánh =Heron(A, B, C) - ví dụ: =Heron(30, 40, 50) hay =Heron(A1, B1, C1) đều được.

Lưu ý là nếu máy bạn có chương trình diệt virus thường trú ở thanh Taskbar thi nó sẽ báo file này của bạn có virus macro hỏi bạn có diệt không thì bạn làm ơn đửng có diệt, nếu không bao nhiêu công sức của bạn bỏ ra từ nãy giữ coi như "công cóc", hay lúc bạn chạy các chương trình diệt virus thì cũng đừng có diệt virus macro file này nha.

!!!!!!... Chúc Bạn Thành Công ...!!!!!!


Hình 7


Hình 8

~~~~~~
Nguyễn Ngọc Hiếu Thuận
thuan107@yahoo.com or thuan107@fptnet.com


PcLeHoan 1996 - 2002
Mirror : http://www.pclehoan.com
Mirror : http://www.lehoanpc.net

Mirror : http://www.ktlehoan.com