Bài viết sẽ đề cập đến cách hoạt động của ứng dụng Date Picker Calendar Form được sử dụng trong VBA Excel (kèm với link tải) cũng như những điểm khác biệt của nó so với Date Picker Add-in dùng trong môi trường Excel . Cùng bắt đầu ngay thôi nào!
Xem nhanh
Trước đây, mình từng có một bài viết giới thiệu về Date Picker Add-in dùng trong môi trường Excel. Tuy nhiên, do tính đóng gói và bảo mật của tác giả nên chúng ta khó vận dụng nó trong môi trường VBA, việc tái sử dụng trong các Userform gặp khó khăn nhất định.
Vậy bây giờ Date Picker Calendar Form khác gì so với add-in? Nếu bạn tìm hiểu VBA sẽ làm quen với các khác niệm: Class, Userform, Module…
Bạn có thể xem lại bài viết qua đường dẫn sau:
Bạn có thể truy cập tại website chính chủ: https://trevoreyre.com/portfolio/excel-datepicker/
Link tải dự phòng: https://bit.ly/calendarfrm
Dim dateVariable as Date dateVariable = CalendarForm.GetDate
Dưới đây là đoạn code ví dụ mà tác giả đã vận dụng, ta thấy ô được gán là H16. Khi bạn cần dùng, chỉ việc gọi macro BasicCalendar lên là được. Lưu ý khi làm việc với nhiều Sheet khác nhau, bạn nên chỉ rõ ô H16 thuộc Sheet nào nhé! Ví dụ: Sheets("Sheet1").Range("H16") = dateVariable
, khi ô bạn áp dụng nằm ở Sheet có tên là Sheet1
Sub BasicCalendar() dateVariable = CalendarForm.GetDate If dateVariable <> 0 Then Range("H16") = dateVariable End Sub
Dưới đây là một macro mình viết lại để vận dụng cho các textbox. Tương ứng ví dụ khi chọn Check-in, Check-out, ta sẽ gọi lại macro bên dưới mà không phải khai báo lặp đi lặp lại.
Private Sub checkin_Enter()
calDatepicker checkin
End Sub
Private Sub checkin_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
calDatepicker checkin
KeyAscii = 0
End Sub
Private Sub calDatepicker(ctlTextbox As Control)
Dim dteNgay As Date
dteNgay = IIF(ctlTextbox.value, ctlTextbox.value,Now())
dateVariable = CalendarForm.GetDate(SelectedDate:=dteNgay)
If dateVariable <> 0 Then ctlTextbox = dateVariable
End Sub
Chúc bạn thành công. Đừng quên theo dõi Học Excel Online cho những bài học bổ ích tiếp theo nhé!