Thứ Năm, 9 tháng 4, 2009

Tạo công cụ nhập ngày tháng trong Excel

Khi nhập ngày tháng trong Excel, người dùng thường cảm thấy bất tiện ở chỗ không biết ngày tháng được định dạng theo ngày/tháng/năm hay tháng/ngày/năm, không biết ngày tháng phân cách bằng dấu chấm (.) hay dấu gạch chéo (/)…? Muốn khắc phục điểm trên, bạn hãy làm theo các bước sau để tạo một cuốn lịch hỗ trợ nhập ngày tháng trong Excel, người dùng không cần nhập từng con số mà chỉ cần chọn ngày tháng trên cuốn lịch để chèn vào cell.

Chuẩn bị

Nếu muốn sử dụng công cụ cho mọi workbook, bạn cần tạo và lưu giữ nó trong tập tin Personal.xls. Tập tin này được gọi (không hiển thị cho người dùng biết) khi mở Excel và tất cả các workbook đều có thể sử dụng mọi macro hay hàm có trong tập tin. Tuy nhiên, nếu bạn muốn sử dụng công cụ cho một workbook thôi thì bạn chỉ cần tạo và lưu công cụ trong workbook đó. Như vậy, chỉ khi bạn mở workbook này thì bạn mới có thể sử dụng công cụ.

Các bước khai báo Personal.xls (bỏ qua bước này nếu chỉ tạo công cụ cho riêng một workbook):

- Trong Excel, vào menu Tools\Macro\Visual Basic Editor (hoặc nhấn phím Alt-F11) để mở Visual Basic Editor.

- Bạn cần kiểm tra tập tin Personal.xls đã được thêm vào chưa. Bên cửa sổ Project - VBA Project, nếu bạn thấy dòng chữ VBAProject (PERSONAL.XLS) có nghĩa là tập tin này đã được thêm vào (hình 1). Nếu chưa thì bạn làm theo các bước sau: Trở lại cửa sổ Excel > vào menu Tools\Macro\Record New Macro để mở hộp thoại Record Macro > chọn Personal Macro Workbook trong mục Store macro in > nhấn OK (hình 2) > rồi nhấn Stop recording (hình 3)

- Sau đó, bạn nhấn Alt-F11 để chuyển qua lại Visual Basic Editor.

image002 by minah2710.

Hình 1

image004 by minah2710.

Hình 2

Hình 3

Thiết kế lịch

Trở lại cửa sổ Microsoft Visual Basic, bạn nhấn vào dòng VBAProject (PERSONAL.XLS) rồi vào menu Insert\UserForm để thêm vào một Form. Bạn thiết lập thuộc tính Name của Form là frmCalendar.

Kế tiếp, bạn thêm điều khiển Microsoft ActiveX Calendar Control vào Toolbox. Bạn vào menu Tools\Additional Controls > trong cửa sổ Additional Controls, đánh dấu kiểm ở mục Calendar Control 8.0 (đối với Excel 97 và 2000) hoặc Calendar Control 10.0 (đối với Excel 2002) > nhấn OK (hình 4).

image008 by minah2710.

Hình 4

Điều khiển Microsoft ActiveX Calendar Control thường được cài đặt cùng với Excel. Nếu chưa có điều khiển này thì bạn cần dùng bộ cài đặt Office để thêm vào, hoặc tải file mscal.ocx rồi chép vào thư mục System (đối với Windows 95, 98, ME) hoặc System32 (đối với Windows NT, 2000, XP), sau đó thực hiện lệnh “regsvr32 mscal.ocx” từ menu Run của Windows (hình 5).

image010 by minah2710.

Hình 5

Từ Toolbox, bạn thêm điều khiển Calendar vào Form (hình 6). Trong cửa sổ thuộc tính của điều khiển Calendar, bạn nhấn vào Custom để chỉnh sửa các giá trị theo ý mình.

image012 by minah2710.

Hình 6

Bước kế tiếp là viết code cho sự kiện Click của điều khiển Calendar. Sau khi người dùng chọn ngày tháng, thì ngày tháng đó sẽ thêm vào cell hiện thời và Form sẽ được đóng lại. Bạn viết code như sau:

Private Sub Calendar1_Click()

ActiveCell.Value = Calendar1.Value

Unload Me

End Sub

Khi mở Form, nếu cell hiện thời có chứa ngày tháng thì lịch sẽ hiện ngày tháng trong cell, nếu không thì lịch sẽ hiện ngày tháng hiện tại. Đoạn code của sự kiện Initiliaze như sau:

Private Sub UserForm_Initialize()

If IsDate(ActiveCell.Value) Then

Calendar1.Value = DateValue(ActiveCell.Value)

Else

Calendar1.Value = Date

End If

End Sub

Bạn cũng cần viết code để gọi hiển thị cuốn lịch từ Excel. Nếu bạn đã tạo file Personal.xls, thì trong cửa sổ Project - VBA Project đã có Module1. Nếu không có thì bạn phải vào menu Insert\Module để thêm vào Module1. Trong phần code của Module1, bạn xóa hết những gì có sẵn trong đó và viết code như sau:

Sub OpenCalendar()

frmCalendar.Show

End Sub

Bạn chọn menu File\Save PERSONAL.XLS (hoặc nhấn Ctrl-S) để lưu lại, hoàn thành các bước tạo cuốn lịch.

Sử dụng lịch để chèn ngày tháng

1. Thêm nút bấm vào thanh công cụ:

Bạn đóng cửa sổ Microsoft Visual Basic, chuyển qua cửa sổ Excel để tạo một nút bấm gọi cuốn lịch. Bạn vào menu View\Toolbars\Customize để mở hộp thoại Customize > chọn thẻ Commands > chọn Macros trong mục Categories > bên mục Commands, bạn kéo và thả biểu tượng Custom Button lên thanh công cụ (hình 7).

image014 by minah2710.

Hình 7

Vẫn mở hộp thoại Customize, bạn nhấn chuột phải ở nút bấm vừa thêm vào thanh công cụ, sửa lại tên nút bấm ở dòng Name (hình 8) - tên này sẽ được hiển thị dưới dạng Tooltip, chọn biểu tượng cho nút bấm trong mục Change Button Image (hình 9), chọn dòng Assign Macro rồi chọn tên macro trong cửa sổ Macro - trong trường hợp này là PERSONAL.XLS!OpenCalendar (hình 10).

image015 by minah2710.

Hình 8

image017 by minah2710.

Hình 9

image019 by minah2710.

Hình 10

2. Thêm mục chọn vào menu chính:

Bạn thực hiện các bước như trên để mở hộp thoại Customize. Lần này, bạn kéo biểu tượng Custom Button đến menu chính (không thả phím chuột), đến menu nào thì menu đó sẽ mở ra. Bạn kéo chuột đến vị trí ưng ý rồi buông phím chuột để thêm mục chọn vào menu (hình 11). Bạn sửa lại các giá trị tương tự như đối với nút bấm trên thanh công cụ.

image021 by minah2710.

Hình 11

Để xóa nút bấm trên thanh công cụ hoặc mục chọn trong menu, bạn cũng mở hộp thoại Customize, nhấn chuột phải trên nút bấm hoặc mục chọn trong menu và chọn Delete.

3. Tạo phím tắt cho macro:

Trong cửa sổ Excel, bạn vào menu Tools\Macro\Macros để mở cửa sổ Macro > chọn tên macro (PERSONAL.XLS!OpenCalendar) (hình 12) > nhấn Options để mở hộp thoại Macro Options > chọn phím tắt để gọi cuốn lịch (hình 13) .

image023 by minah2710.

Hình 12

image025 by minah2710.

Hình 13

4. Gọi hiển thị lich và chèn ngày tháng:

Như vậy mỗi khi muốn thêm ngày tháng vào cell, bạn nhấn nút bấm trên thanh công cụ hoặc chọn trong menu chính, hoặc sử dụng phím tắt đã tạo để gọi hiển thị cuốn lịch, rồi chọn ngày tháng. Lưu ý là bạn phải chọn tháng và năm trước khi chọn ngày, bởi vì khi bạn chọn ngày xong thì cuốn lịch sẽ đóng lại.

Bạn thấy đấy, với công cụ nhập ngày tháng vừa tạo, bạn sẽ tiết kiệm được rất nhiều thời gian và công sức mà việc nhập liệu lại rất tiện lợi, chính xác. Chúc bạn thực hiện thành công!

Ngô Bảo Khoa

Thế giới @ 72

Không có nhận xét nào:

Đăng nhận xét