ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

搜索
EH技术汇-专业的职场技能充电站 妙哉!函数段子手趣味讲函数 Excel服务器-会Excel,做管理系统 效率神器,一键搞定繁琐工作
HR薪酬管理数字化实战 Excel 2021函数公式学习大典 Excel数据透视表实战秘技 打造核心竞争力的职场宝典
让更多数据处理,一键完成 数据工作者的案头书 免费直播课集锦 ExcelHome出品 - VBA代码宝免费下载
用ChatGPT与VBA一键搞定Excel WPS表格从入门到精通 Excel VBA经典代码实践指南
查看: 9446|回复: 34

[分享] 自制仿Win7日期窗口的日期选择器

[复制链接]

TA的精华主题

TA的得分主题

发表于 2021-2-21 13:55 | 显示全部楼层 |阅读模式
本帖最后由 mzbao 于 2021-2-23 21:07 编辑

看了很多前辈的关于类模块的教程和实例,一直似懂非懂,看得不是太明白。为了加深理解,自己尝试做了一个制仿Win7日期窗口的日期选择器,做完后,虽然感觉类模块代码用的有点生硬,但总算是实现了预期的效果。不过最后关于选择器给单元格和窗体其它控件赋值的方式,我感觉我的方式好像不太好,应该还有更加直接的方式,但我还没学会。关于窗体随单元格位置变化的API相关代码,是找前辈们的代码拼凑的。





1.gif

DatePicker.rar

48.31 KB, 下载次数: 738

评分

8

查看全部评分

TA的精华主题

TA的得分主题

发表于 2021-2-21 15:17 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
untitled1.png

TA的精华主题

TA的得分主题

发表于 2021-2-21 21:10 | 显示全部楼层
兄弟,你好,能否给代买价格注释呢,谢谢了。

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    If Target.Column = 1 Then
        Set DP_inRng = Target
        Call FmDateCL.ShowFrmAndMoveWithRange(Target)
    Else
        FmDateCL.Hide
    End If
End Sub

TA的精华主题

TA的得分主题

发表于 2021-2-21 21:21 | 显示全部楼层
觉的挺好的,我是新人,指定哪一列是看懂了,但是请问请教三个问题,谢谢:

1.如何写去指定第一列和第二列同时有这个日期选择器?
2.如何指定的多个列有这个日期选择器?
3.如何是从列的哪个单元格开始到哪个单元格为止,有这个功能?

TA的精华主题

TA的得分主题

 楼主| 发表于 2021-2-21 21:49 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
xubo_eddy 发表于 2021-2-21 21:21
觉的挺好的,我是新人,指定哪一列是看懂了,但是请问请教三个问题,谢谢:

1.如何写去指定第一列和第二 ...

你的这些问题和这个日期选择器关系不大,只要改一下Sheet里的Worksheet_SelectionChange()事件里的条件就可以了。比如你第1和3个问题,你可以把我下面的“A:B”地址改成你需要的,第2个也差不多。

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    If Union(Target, Range("A:B")).Address(0, 0) = "A:B" Then
        Set DP_inRng = Target
        Call FmDateCL.ShowFrmAndMoveWithRange(Target)
    Else
        FmDateCL.Hide
    End If
End Sub
现在的代码是满足里第1个问题的要求。

TA的精华主题

TA的得分主题

发表于 2021-2-21 23:45 | 显示全部楼层
xubo_eddy 发表于 2021-2-21 21:21
觉的挺好的,我是新人,指定哪一列是看懂了,但是请问请教三个问题,谢谢:

1.如何写去指定第一列和第二 ...

谢谢楼主分享,学习精神可嘉

个人觉得,日期控件主要适用于不便于手工输入的界面,或对格式有严格要求的地方
单元格中操作么,调出控件再去点击和选择的时间,键盘侠早输入完了

TA的精华主题

TA的得分主题

发表于 2021-2-22 17:38 | 显示全部楼层
本帖最后由 hqlin65 于 2021-2-22 17:40 编辑

9999.png 8888.png 8888.png

如果弹出的窗体在这各状态下,红圈中的选择键能循环增加或减少月份就完美了。目前在这个状态下点红圈中的选择键就出错。

TA的精华主题

TA的得分主题

发表于 2021-2-22 17:43 | 显示全部楼层
感谢分享!!如能完善上面的问题就更好了

TA的精华主题

TA的得分主题

 楼主| 发表于 2021-2-22 22:16 | 显示全部楼层
hqlin65 发表于 2021-2-22 17:38
如果弹出的窗体在这各状态下,红圈中的选择键能循环增加或减少月份就完美了。目前在这个状态下点红圈中 ...

我这里显示可以的啊。你看上面的动图。你点一下调试看看哪个过程有问题。

TA的精华主题

TA的得分主题

发表于 2021-2-22 22:32 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
mzbao 发表于 2021-2-22 22:16
我这里显示可以的啊。你看上面的动图。你点一下调试看看哪个过程有问题。

感谢您的分享!很奇怪,我今天在单位的电脑上试了,都会出错,刚才回家,在家里的电脑上运行却没有问题。再次感谢你的分享
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

手机版|关于我们|联系我们|ExcelHome

GMT+8, 2024-11-5 12:15 , Processed in 0.040995 second(s), 12 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

沪公网安备 31011702000001号 沪ICP备11019229号-2

本论坛言论纯属发表者个人意见,任何违反国家相关法律的言论,本站将协助国家相关部门追究发言者责任!     本站特聘法律顾问:李志群律师

快速回复 返回顶部 返回列表