ExcelVBA日期控件美化 跟随单元格日期面板兼容32位+64位及窗体

单元格中使用效果

表格文本框控件中的效果

窗体中使用效果示范

众多周知,Excel自带的日期控件兼容性极差,勉强安装后,换一个机器无法使用的几率简直就是99%,鉴于此,我们在做VBA项目的时候,都是使用自制的VBA窗体定制日期控件,网上有不少版本,不过颜值都不高,我花了3天时间,精心制作了本款现代化的日历控件。

操作动画如下

日历面板操作动画

本控件主要功能特点如下

  1. 单窗体,无需其他模块辅助,导出的窗体,其他项目直接导入使用即可

  2. 跟随单元格位置,无标题栏,无边框窗体,使用体验与控件无二,点击其他单元格自动隐藏

  3. 按键支持,按下Esc退出面板,按下回车输入日期

  4. 鼠标滑过日期变色,当前高亮显示,任何日期点击今天快速返回

  5. 兼容表格中的Activex文本框及组合框控件

  6. 兼容窗体控件中的文本框和组合框控件

  7. 用户接口全部为一句代码,只需要在单元格选择事件或者控件鼠标点击事件中加入 frmRQ.ShowDate Target

  8. 窗体用法可用于其他VBA宿主中的窗体控件

本源码可学习的技术重难点

  1. 日期面板设计与实现

  2. 日历计算的一般方法

  3. 窗体美化及排版技巧

  4. 鼠标滑过控件高亮变色技巧

  5. WINAPI函数制作无标题栏无边框窗体

  6. 窗体跟随单元格及控件高级技巧

  7. 32位和64位Office代码兼容技巧

下面是使用方法和下载地址


单元格中使用方法

  1. 在单元格所在sheet代码模块中粘贴下面代码

  2. [B3,C3]为单元格作用区域,改为你实际使用的日期单元格区域即可,可多个不连续区域可整列整行

  3. 核心就是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

文本框及组合框控件中的使用方法

  1. 设计模式下 双击控件进入代码页面输入下面代码

  2. 其他控件只需要复制本代码 修改TextBox1为实际对应的控件名称即可

控件中的使用方法

控件下载地址

(0)

相关推荐