fbpx

Ứng dụng Chọn ngày dùng trong Excel và VBA (Calendar Form)

Chia sẻ bài viết này:
  •  
  •  
  •  
  •  
  •  
  •  
  •   
  •   

Giới thiệu Công cụ hỗ trợ chọn ngày trong Excel

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:

Tải về Calendar Form

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

Hướng dẫn cài đặt và sử dụng Calendar Form

  1. Sau khi tải về, bạn cần giải nén ra thư mục. (Bên trong sẽ có file CalendarForm v1.5.2.xlsm hướng dẫn và ví dụ cho bạn các thông số tương ứng).
  2. Ở file bạn cần sử dụng, bạn nhấn tổ hợp phím ALT + F11 để mở cửa sổ lập trình VBA.
  3. Ở cửa sổ Project Explorer (bạn có thể chọn menu View rồi chọn Project Explorer, phím tắt: CTRL+R)
  4. Bạn click phải Project bạn cần import, sau đó chọn Import File…
  5. Chọn file CalendarForm.frm mà bạn đã giải nén ở bước 1. Vậy là xong.
  6. Sau khi đã hoàn tất bước trên, bạn có thể sử dụng bằng cách khai báo biến, ra gọi nó ra.
Dim dateVariable as Date
dateVariable = CalendarForm.GetDate

Các ví dụ ứng dụng của Calendar Form

Ứng dụng Macro để hiển thị DatePicker trong ô của Excel

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

Ứng dụng gán vào Textbox trong Userform VBA

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.


Chia sẻ bài viết này:
  •  
  •  
  •  
  •  
  •  
  •  
  •   
  •