10. Các hộp thoại thơng dụng
10.1. Hộp thơng điệp (Message Box – MsgBox)
MsgBox được sử dụng để nhắc nhở, thơng báo hoặc cảnh báo người dùng. MsgBox cĩ thể được gọi theo kiểu thủ tục (khơng cĩ giá trị trả về), hoặc theo kiểu hàm (giá trị trả về là nút lệnh được người dùng chọn).
Cú pháp gọi MsgBox như sau: * Dạng thủ tục:
MsgBox Prompt, [Buttons], [Title]
* Dạng hàm
MsgBox(Prompt, [Buttons], [Title])
(Giá trị trả về của hàm cĩ kiểu VbMsgBoxResult – tham khảo trong Object Browser) MsgBox “Chuỗi thơng báo‖, biểu tượng + nút nhấn, “Tiêu đề”
Tham số Mơ tả
Prompt Kiểu String. Nội dung dịng nhắc trong MsgBox.
Kiểu VbMsgBoxStyle (tham khảo trong Object Browser). Kiểu hiển thị biểu tượng và nút lệnh trong MsgBox.
Buttons Biểu tượng: • vbCritical • vbInformation • vbQuestion • vbExclamation Các loại nút nhấn: •vbYesNo • vbYesNoCancel • vbOKCancel • vbOKOnly • vbRetryCancel Title Kiểu String. Nội dung dịng tiêu đề của MsgBox.
Các loại biểu tượng
Các loại nút nhấn
Ví dụ: Hiện thơng báo "Chao cac ban, chuc buoi hoc vui ve !!"
Hướng dẫn:
Bước 1:
- Khởi động MsExcel
-Thực hiện lệnh Tools \ Macro \ Visual Basic Editor (2003) Developer\ Visual Basic Editor (2007) -Thực hiện lệnh Insert \ Modul
Bước 2: Thêm 1 hàm cĩ tên là Hello.
- Click menu Insert rồi chọn Procedure - Đặt tên hàm tại ơ Name; rồi chọn Function.
Bước 3: Gõ vào dịng lệnh sau:
Public Function Hello()
MsgBox ("Chao cac ban, chuc buoi hoc vui ve !!") End Function
Bước 4: Kiểm tra chức năng của hàm Hello.
Quay lại Excel, tại 1 ơ bất kỳ, gõ vào cơng thức sau: =Hello()
Chú ý: để lưu workbook cĩ chứa các hàm viết bằng VBA, ta phải dùng loại file Excel Macro-
Enabled Workbook (*.xlsm)
10.2. Hộp nhập dữ liệu (Input Box – InputBox)
InputBox được sử dụng nhằm yêu cầu người dùng nhập một chuỗi (String) theo gợi ý của dịng nhắc (Prompt) và tiêu đề (Title) trên đĩ. InputBox được gọi theo dạng hàm với giá trị trả về là chuỗi dữ liệu mà người dùng nhập.
Cú pháp gọi InputBox thơng thường như sau:
InputBox(Prompt, [Title], [Default], [XPos], [YPos])
Tham số:
– prompt: Giá trị mà bạn muốn hiển thị trong InputBox – Title: Tiêu đề của InputBox
– Default: Giá trị mặc định khi InputBox xuất hiện – xpos, ypos: Vị trí xuất hiện của InputBox
Ví dụ:
Dim LngSodiemMax As Long LngSodiemMax = _
Val(InputBox("Nhập số lượng điểm tối đa (số nguyên dương)", _ "Số điểm tối đa", "100000"))
Nếu người dùng bấm nút OK thì giá trị trả về của hàm InputBox là một chuỗi cĩ giá trị “100000”, cịn nếu bấm nút Cancel thì giá trị trả về là một chuỗi rỗng.
10.3. Làm quen User Form
Sự giao tiếp nhập-xuất dữ liệu giữa người dùng và chương trình cĩ thể được thực hiện thơng qua giao diện của ứng dụng nền. Tuy nhiên, trong nhiều trường hợp giao diện nhập-xuất dữ liệu của ứng dụng nền chưa thể đáp ứng được nhu cầu tương tác dữ liệu một cách chi tiết cũng như tiện lợi cho người sử dụng, và khi đĩ, cần tạo ra các giao diện nhập-xuất riêng thơng qua việc sử dụng các UserForm trong dự án VBA .
a/ Chuột phải Project (tên_file) Insert / UserForm
c/ Thanh ToolBox:
d/Nên đặt lại tên cho các đối tượng
e/Các thuộc tính của UserForm và các thành phần điều khiển.
Các thuộc tính (Properties) là các thơng số quy định đặc điểm, tính chất cũng như trạng thái của UserForm hay các điều khiển, ví dụ màu nền của một điểu khiển được quy định bởi thuộc tính BackColor. Những thuộc tính này cĩ thể được thay đổi trong lúc thiết kế UserForm hoặc lúc chương trình đang chạy. Tuy nhiên một số thuộc tính khơng cho phép thay đổi mà chỉ cho phép người dùng biết được giá trị của nĩ (thuộc tính chỉ đọc – Read Only). Trong quá trình thiết kế UserForm, khi ta dùng chuột chọn bất cứ thành phần nào trên UserForm (kể cả chính UserForm) thì các thuộc tính của nĩ sẽ được hiển thị tương ứng trong cửa sổ Properties của VBA IDE.
Một số thuộc tính cơ bản của UserForm và các điều khiển:
Thuộc tính Giải thích
Name Thể hiện tên của UserForm hay điều khiển. Đây là thuộc tính rất quan trọng, là yếu tố xác định điều khiển khi lập trình. Thuộc tính này chỉ được thay đổi lúc thiết kế giao diện (trong của sổ Properties của VBA IDE).
BackColor Giá trị kiểu Long thể hiện màu nền của UserForm hay điều khiển. Caption Giá trị kiểu String thể hiện tiêu đề của UserForm hay điều khiển.
Enable Giá trị kiểu logic (Boolean) xác định trạng thái làm việc của điều khiển, giá trị bằng True ứng với trạng thái hoạt động, giá trị bằng False ứng với trạng thái khơng hoạt động (điều khiển coi như bị vơ hiệu hố và thường được hiển thị mờ đi trên UserForm).
Visible Giá trị kiểu logic (Boolean) xác định trạng thái hiển thị của điều khiển, giá trị bằng True ứng với sự hiển thị điều khiển, giá trị bằng False ứng với sự ẩn điều khiển.
Font Thể hiện kiểu và cỡ chữ hiển thị trên UserForm hoặc điều khiển. Picture Thể hiện hình ảnh trên nền UserForm hoặc điều khiển.
ControlTipText Giá trị kiểu String thể hiện chú thích về điều khiển khi chuột di chuyển qua (Tooltip) trong lúc chương trình hoạt động.
MouseIcon Thể hiện biểu tượng con trỏ chuột hiển thị trên điều khiển. MousePointer Thể hiện loại con trỏ chuột hiển thị trên nút lệnh.
f/ Chuột phải Project (tên_file) Insert \ Module
Dùng để chứa các thủ tục và hàm chung do người thiết kế tự lập trình bằng ngơn ngữ VBA
g/ Viết code: Hàm (Sub)
Ví dụ 1: Tạo một UserForm và viết mã lệnh để khi kích chuột vào UserForm sẽ hiển thị số lần
kích chuột trên tiêu đề của nĩ đồng thời đổi màu nền của UserForm theo tình huống: nếu số lần kích chuột là chẵn thì màu đen, là lẻ thì màu trắng.
Các thao tác như sau:
1. Thêm UserForm vào trong dự án bằng cách chọn Insert \ UserForm.
2. Đặt tên UserForm là “usfCuaso1” trong thuộc tính Name của cửa sổ Properties; đặt tiêu đề xuất phát của UserForm là “Cua so chinh” trong thuộc tính Caption của cửa số Properties.
3. Viết mã lệnh cho sự kiện Click của UserForm (hiển thị cửa sổ lệnh của UserForm bằng cách nháy đúp chuột vào UserForm, chọn UserForm và sự kiện Click).
Mã lệnh cho thủ tục sự kiện Click như sau:
Private Sub UserForm_Click() Static numClick As Long numClick = numClick + 1 If numClick Mod 2 = 0 Then Me.BackColor = vbBlack Else
Me.BackColor = vbWhite End If
usfCuaso1.Caption = "Number of Click: " & Str(numClick) End Sub
GỢI Ý Trong đoạn mã trên, vbBlack là hằng số tương ứng với màu đen, vbWhite là hằng số
Ví dụ 2: Tạo một UserForm với các điều khiển như hình dưới đây:
Trình tự thực hiện như sau:
1. Thêm một UserForm vào dự án.
2. Chọn vào UserForm vừa tạo, chọn biểu tượng ab| trong hộp cơng cụ điều khiển (Control Toolbox). Sau đĩ, rê thả chuột trên UserForm để tạo một hộp văn bản (TextBox).
3. Tiếp tục chọn UserForm trên, chọn biểu tượng trong hộp cơng cụ điều khiển, rê thả chuột để tạo một nút lệnh (Command Button), đặt tên (thuộc tính Name) của nút lệnh là cmdUndo, đặt tiêu đề (thuộc tính Caption) của nút lệnh là Undo.
4. Tương tự như trên tạo nút lệnh cmdRedo với tiêu đề Redo. 5. Viết các thủ tục sự kiện Click cho các nút lệnh trên như sau:
Private Sub cmdRedo_Click() Me.RedoAction
End Sub
Private Sub cmdUndo_Click() Me.UndoAction
End Sub
Sau đĩ, chọn UserForm và nhấn phím F5 để chạy chương trình. Nhập một dịng văn bản vào trong hộp văn bản. Kích chuột vào nút Undo, sau đĩ là nút Redo và theo dõi kết quả.