ExcelVBA日期控件美化 跟随单元格日期面板兼容32位+64位及窗体
单元格中使用效果
表格文本框控件中的效果
窗体中使用效果示范
众多周知,Excel自带的日期控件兼容性极差,勉强安装后,换一个机器无法使用的几率简直就是99%,鉴于此,我们在做VBA项目的时候,都是使用自制的VBA窗体定制日期控件,网上有不少版本,不过颜值都不高,我花了3天时间,精心制作了本款现代化的日历控件。
操作动画如下
日历面板操作动画
本控件主要功能特点如下
单窗体,无需其他模块辅助,导出的窗体,其他项目直接导入使用即可
跟随单元格位置,无标题栏,无边框窗体,使用体验与控件无二,点击其他单元格自动隐藏
按键支持,按下Esc退出面板,按下回车输入日期
鼠标滑过日期变色,当前高亮显示,任何日期点击今天快速返回
兼容表格中的Activex文本框及组合框控件
兼容窗体控件中的文本框和组合框控件
用户接口全部为一句代码,只需要在单元格选择事件或者控件鼠标点击事件中加入 frmRQ.ShowDate Target
窗体用法可用于其他VBA宿主中的窗体控件
本源码可学习的技术重难点
日期面板设计与实现
日历计算的一般方法
窗体美化及排版技巧
鼠标滑过控件高亮变色技巧
WINAPI函数制作无标题栏无边框窗体
窗体跟随单元格及控件高级技巧
32位和64位Office代码兼容技巧
下面是使用方法和下载地址
单元格中使用方法
在单元格所在sheet代码模块中粘贴下面代码
[B3,C3]为单元格作用区域,改为你实际使用的日期单元格区域即可,可多个不连续区域可整列整行
核心就是frmRQ.ShowDate Target 这一句代码 不需要其他代码
工作表中代码
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Target.Address Like "*:*" Then Exit Sub '多选单元格退出
frmRQ.Hide '每次点击单元格先隐藏 后面决定是否显示
If Not Intersect(Target, [B3,C3]) Is Nothing Then '指定区域 这个可以放在单选和多选事件中
frmRQ.ShowDate Target
End If
End Sub
文本框及组合框控件中的使用方法
设计模式下 双击控件进入代码页面输入下面代码
其他控件只需要复制本代码 修改TextBox1为实际对应的控件名称即可
控件中的使用方法