文章背景:最近在查看同事写的VBA代码时,发现了DTPicker日期控件。DTPicker
是日期选择控件,自Win7开始,它就不是Windows系统自带的,需要下载MSCOMCT2.OCX,并在电脑上注册后才能使用。
1 DTPicker日期控件
DTPicker日期控件目前只支持32位
的Office软件,而与windows系统的版本(32位或64位)无关。因此,在使用DTPicker日期控件之前,需要检查下电脑上office软件的版本是否是32位的。
针对32位的office软件,若要使用DTPicker日期控件,需事先进行如下三步操作。
(1)下载MSCOMCT2.OCX
文件(以下简称OCX文件
),参见文末的参考资料[1]。
(2)将OCX文件
拷贝到指定文件夹内。对于64位的windows系统,拷贝路径为:C:WindowsSysWOW64
。对于32位的windows系统,拷贝路径为:c:windowssystem32
。
(3)在命令提示符窗口进行注册(通过管理员身份)。对于64位的windows系统,代码语句为:regsvr32 C:WindowsSysWOW64mscomct2.ocx
。
注册成功后,打开Excel文件,此时可以在excel表格和VBA窗口中调用DTPicker
控件。
http://mpvideo.qpic.cn/0bc3duabqaaa5uamxszafbrfahoddaoqagaa.f10002.mp4?dis_k=9526b5c9afa4ce0be95ff09c5ff424ce&dis_t=1663656287&vid=wxv_2293886761531506690&format_id=10002&support_redirect=0&mmversion=false
2 DTPicker日期控件的替代方案
前面已经提到,DTPicker
日期控件目前只支持32位
的Office软件。因此,对于64位
的Office软件,需要找一个可以替代DTPicker
的日期控件。目前在网上找到了一个替代方案,相关文件的下载路径,请参见文末的参考资料[4]。
测试代码:
代码语言:javascript复制Option Explicit
Sub test()
Dim dateVariable As Date
dateVariable = CalendarForm.GetDate
MsgBox "你选的日期为" & dateVariable
End Sub
控件使用的视频演示:http://mpvideo.qpic.cn/0bc3ymabcaaazuamlkzaprrfbq6dchbqaeia.f10002.mp4?dis_k=a17c99dc05351fe9dc7682ce82505865&dis_t=1663656287&vid=wxv_2293887270418022403&format_id=10002&support_redirect=0&mmversion=false
参考资料:
[1] MSCOMCT2.OCX : Free Download(https://www.ocxme.com/getfile.php?file=166&id=8d8aad175c9779503a68136e49eea2b4)
[2] VBA Userform with DTPicker(https://stackoverflow.com/questions/33798867/vba-userform-with-dtpicker)
[3] How to install mscomct2.ocx file from .cab file (Excel User Form and VBA)(https://stackoverflow.com/questions/15816014/how-to-install-mscomct2-ocx-file-from-cab-file-excel-user-form-and-vba)
[4] Excel VBA Date Picker(https://trevoreyre.com/portfolio/excel-datepicker/)