Tham khảo tài liệu ''giáo trình phân tích khả năng ứng dụng các phương pháp lập trình trên microsoft access plug in p2'', công nghệ thông tin, tin học văn phòng phục vụ nhu cầu học tập, nghiên cứu và làm việc hiệu quả
Trong trường hợp người sử dụng không đặt trỏ giữa, danh sách Macro để người dùng lựa chọn Macro cần thực thi 2.5 Hiệu chỉnh Macro Khi Macro tạo chưa đáp ứng đủ nhu cầu người sử dụng thay đổi, bổ sung mã lệnh cho Macro Quá trình hiệu chỉnh Macro thực thơng qua VBAIDE Để hiệu chỉnh Macro, ta dùng trình quản lý Macro (xem mục “Quản lý Macro” trang 105) truy cập trực tiếp VBAIDE Về chất, việc hiệu chỉnh (sửa đổi) Macro tương đương việclập trình để xây dựng nên Macro 2.6 Vấn đề an toàn sử dụng Macro Do Macro đoạn mã lệnh tự động thực thi đoạn mã lệnh gây nguy hiểm cho máy tính người dùng (dạng Macro Virus) Chính vậy, Excel sử dụng chế bảo vệ để chống lại nguy lây nhiễm virus thông qua Macro Cơ chế điều chỉnh thơng qua mức an ninh khác nhau: Ø Very High Ø High Ø Medium Ø Low GỢI Ý Mức an ninh Excel thiết lập cách chọn trình đơn ToolsƯMacrSecurity… Thơng thường, sử dụng Excel với tệp bảng tính có chứa Macro, nên đặt mức an ninh Medium Ở mức này, Excel yêu cầu người dùng xác thực xem đoạn mã lệnh tệp bảng tính có phải từ nguồn tin cậy hay khơng Hình IV-6: Hộp thoại cảnh báo an ninh Excel Nếu người dùng chọn Enable Macros, Macro chứa workbook phép thực thi Nếu người dùng chọn Disable Macros, Macro chứa workbook tồn workbook thực thi Xây dựng hàm Excel 3.1 Khái niệm hàm Excel Hàm công thức định nghĩa sẵn Excel để thực tính tốn dựa số liệu đầu vào, gọi tham số, theo trình tự lập trình sẵn nhằm thực phép tính từ đơn giản đến phức tạp 108 CHƯƠNG IV: LẬP TRÌNH TRÊN MICROSOFT EXCEL Để hiểu rõ cấu trúc hàm, ta tìm hiểu hàm ROUND có sẵn Excel, hàm dùng để làm tròn số: Cấu trúc Một hàm bắt đầu dấu “=”, tiếp sau tên hàm, dấu ngoặc đơn “(“, danh sách tham số cách dấu phẩy “,” cuối dấu ngoặc đơn “)” Tên hàm Ấn phím SHIFT+F3 để hiển thị danh sách tất hàm Excel Các tham số Tham số số, chữ, giá trị logic TRUE FALSE, mảng, giá trị lỗi #NA, tham chiếu đến ô khác Tham số truyền vào phải có kiểu thích hợp với kiểu tham số tương ứng hàm Tham số truyền vào số, cơng thức, hàm Chú thích hàm Chú thích hàm dùng để thể cấu trúc danh sách tham số hàm, lên ta nhập vào tên hàm Chú thích hàm xuất hàm xây dựng sẵn Excel 3.2 Tạo hàm VBA 3.2.1 Tại phải dùng hàm? Trong q trình tính tốn với bảng tính, người ta thấy ln tồn nhu cầu: giá trị tính dựa vào hai yếu tố: Ø Tính theo nhiều cơng thức theo trình tự logic Ø Việc tính tốn cần phải dựa thơng số bên ngồi khác Nếu đối chiếu hai yếu tố với cấu trúc hàm (ở mục trước) ta thấy nhu cầu giải cách thỏa đáng với việc sử dụng hàm Hơn nữa, sử dụng hàm, việc sử dụng lặp cho nhiều ô hiệu chỉnh nội dung tính tốn sau thuận tiện so với việc khơng dùng hàm (tính trực tiếp ơ) Chính ưu điểm mà hàng loạt hàm Excel xây dựng sẵn phân loại theo nhóm để tạo thuận tiện cho người dùng Một câu hỏi đặt với 300 hàm có sẵn Excel cộng với hàm có sẵn VBA, lại cần phải tạo hàm mới? Câu trả lời đơn giản: để đơn giản hố cơng việc Với chút sáng tạo, người dùng tạo thêm hàm phục vụ cho nhu cầu Khơng phải lúc hàm có sẵn giải cơng việc người dùng, giải phải thông qua nhiều hàm khác thực theo cách phức tạp Thay vào đó, người dùng tạo hàm đảm nhận nhiệm vụ Hàm có cách thức tính tốn hồn mới, việc tập hợp lại hàm sẵn có để tạo thành hàm đơn giản Càng đơn giản, dễ hiểu, dễ nhớ dễ sử dụng Lấy ví dụ Excel, có cung cấp cơng cụ có tên Lookup Bộ công cụ cho phép người sử dụng tiến hành tra bảng chiều cách dễ dàng Nhưng việc tra bảng nội suy thực nhờ cơng cụ Vì thế, xây dựng hàm dùng để tra bảng nội suy chiều công cụ tốt phục vụ cho q trình tính tốn, ngành cơng trình Excel cho phép xây dựng hàm VBA, đặc biệt, việc sử dụng hàm khơng khác so với việc sử dụng hàm có sẵn Excel Hàm ln mang đặc tính: 109 Ø Trả giá trị đó, tương tự hàm có sẵn Excel; Ø Hàm sử dụng chương trình VBA, nghĩa vừa sử dụng bảng tính (trong ơ), đồng thời sử dụng chương trình viết VBA 3.2.2 Cấu trúc hàm Thực chất, hàm chương trình dạng Function Khác với Macro, hàm chương trình có giá trị trả có tham số Khi tạo hàm mới, người sử dụng cần phải tuân thủ theo dạng thức khai báo sau: [Public/Private] Function Tên_hàm([DSách_tham_số])[as kiểu_dữ_liệu] [Câu_lệnh] [Tên_hàm = biểu_thức] [Exit Function] [Câu_lệnh] [Tên_hàm = biểu_thức] End Function Trong đó: Ø Public: (tuỳ chọn) từ khoá biểu thị phạm vi hàm, hàm sử dụng đâu tất dự án VBA có Khi có từ khố Public, tên hàm hiển thị danh sách hàm Excel Ø Private: (tuỳ chọn) từ khoá biểu thị phạm vi hàm, hàm sử dụng bên mơ-đun có chứa hàm Khi có từ khố Private, tên hàm không hiển thị danh sách hàm Excel, người sử dụng dùng hàm bảng tính cách bình thường CHÚ Ý Nếu không khai báo phạm vi cho hàm (từ khố Public/Private), mặc định, hàm có phạm vi Public Ø Function: (bắt buộc) từ khoá báo hiệu bắt đầu hàm Ø Tên_hàm: (bắt buộc) tên hàm, cách đặt tên hàm tương tự cách đặt tên biến Tên_hàm sử dụng biến toàn hàm, hàm kết thúc giá trị trả hàm giá trị gán cho biến Tên_hàm cuối Ø Danh_sách_tham_số: (tuỳ chọn) danh sách tham số đầu vào hàm Các tham số phân cách với dấu phẩy Ø Kiểu_dữ_liệu: (tuỳ chọn) quy định kiểu giá trị trả hàm Nếu không quy định kiểu liệu, hàm có kiểu liệu mặc định Variant Ø Exit Function: (tuỳ chọn) câu lệnh dùng để kết thúc hàm (cho dù phía sau câu lệnh cịn khối lệnh khác) Ø End Function: (bắt buộc) từ khoá báo hiệu kết thúc hàm 3.2.3 Tạo hàm Để minh hoạ rõ cách thức tạo hàm mới, lấy ví dụ tạo hàm đơn giản: hàm tính diện tích hình chữ nhật Hàm có tên Dien_tich, với hai tham số đầu vào chiều rộng chiều cao Kiểu liệu tham số kiểu số thực giá trị trả hàm kiểu số thực Để tạo hàm mới, thực theo bước sau: 110 CHƯƠNG IV: LẬP TRÌNH TRÊN MICROSOFT EXCEL Khởi động VBAIDE Trong trình đơn Tools, chọn mục MacrVisual Basic Editor; Trong trình đơn Insert, chọn mục Module để tạo mô-đun mới, nơi chứa hàm người dùng định nghĩa Trong trình đơn Insert, chọn mục Procedure… để hiển thị hộp thoại Add Procedure Sau điền tên hàm vào mục Name, chọn kiểu chương trình Function phạm vi Public Cuối chọn OK; Hình IV-7: Hộp thoại Add Procedure Chương trình tự động phát sinh đoạn mã lệnh sau: Public Function Dien_Tich() End Function Thay đoạn mã lệnh đoạn mã lệnh sau: Public Function Dien_Tich(Rong As Double, Cao As Double) As Double ‘Hàm tính diện tích hình chữ nhật Dien_Tich = Rong * Cao End Function Trong trình đơn File, chọn mục Close and Return to Microsoft Excel để quay trở hình Excel; Lúc này, hàm mà ta vừa xây dựng, có tên Dien_Tich, sử dụng bình thường hàm khác Excel 111 Hình IV-8: Sử dụng hàm Excel CHÚ Ý Các bước tạo hàm tương tự bước tạo Macro phần trước Tuy nhiên, hàm cần phải có giá trị trả nên khai báo kiểu chương trình cho hàm, người dùng cần phải chọn Function (khác với tạo Macro, phải chọn Sub) Thông thường, với yêu cầu tính tốn khơng thiết phải tạo hàm mới, đoạn ví dụ đơn giản nhằm minh hoạ cách thức tạo hàm cấu trúc hàm Để hiểu rõ hàm, ta xem lại đoạn mã trên: Public Function Dien_Tich(Rong As Double, Cao As Double) As Double ‘Hàm tính diện tích hình chữ nhật Dien_Tich = Rong * Cao End Function Ở dịng đầu tiên, khố Public, tên hàm hiển thị danh sách hàm Excel (được hiển thị nhập dấu vào bấm phím Shift+F3) Tiếp sau từ khố Function (chứ khơng phải Sub Macro) tên hàm, Dien_Tich Hàm có hai tham số, nằm hai dấu ngoặc đơn, Rong Cao, có kiểu số thực Từ khố As Double cuối xác định kiểu trả hàm Dien_Tich kiểu số thực Ở dòng thứ 2, đơn giản dịng thích bắt đầu dấu phẩy (‘) Ở dòng thứ 3, giá trị hàm tính dựa hai tham số đầu vào Rong Cao Hàm kết thúc câu lệnh End Function CHÚ Ý Khi xây dựng hàm mới, cần phải ý khác biệt hàm gọi từ chương trình VBA hàm sử dụng bảng tính Các hàm sử dụng bảng tính mang tính “bị động”, tức thao tác vùng liệu thay đổi nội dung bảng tính Nếu người dùng cố tạo hàm mà có thay đổi định dạng ô, màu chẳng hạn, hàm khơng thực được, hàm trả giá trị lỗi Như vậy, tạo hàm cần ghi nhớ: Hàm đơn giản trả giá trị đó; Hàm khơng thể thực thao tác làm thay đổi đối tượng 3.3 Hàm trả lỗi Trong số trường hợp, hàm phải trả giá trị lỗi Để làm rõ điều này, lấy ví dụ hàm phân loại sinh viên Function PhanLoai(DiemTB) As String If (DiemTB >= 5) Then PhanLoai = "Do" 112 ... dụng chương trình VBA, nghĩa vừa sử dụng bảng tính (trong ô), đồng thời sử dụng chương trình viết VBA 3.2.2 Cấu trúc hàm Thực chất, hàm chương trình dạng Function Khác với Macro, hàm chương trình. .. thực theo bước sau: 110 CHƯƠNG IV: LẬP TRÌNH TRÊN? ?MICROSOFT? ?EXCEL Khởi động VBAIDE Trong trình đơn Tools, chọn mục MacrVisual Basic Editor; Trong trình đơn Insert, chọn mục Module để tạo mơ-đun...CHƯƠNG IV: LẬP TRÌNH TRÊN? ?MICROSOFT? ?EXCEL Để hiểu rõ cấu trúc hàm, ta tìm hiểu hàm ROUND có sẵn Excel, hàm dùng để