ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

[原创][分享]通用日历拾取类(无须控件,公开源码)

  [复制链接]

TA的精华主题

TA的得分主题

发表于 2006-8-21 13:52 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
本帖已被收录到知识树中,索引项:控件

楼主啊,能不能告诉我加两个按钮,加载日历拾取后,一个是隐藏那个下拉箭头,一个是显示下拉箭头,很有用的。

我看了你的程序,但看不懂,只能直接借用了,呵呵...

对了,你的程序应有一个unload日历的,但不知道如何调用,能不能顺便告诉我???

谢了!

TA的精华主题

TA的得分主题

发表于 2006-8-21 14:00 | 显示全部楼层
请问楼主的图片是怎么做的呢?要用什么软件?

TA的精华主题

TA的得分主题

发表于 2006-8-21 16:20 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助

顶一下,希望楼主可以看到:

能不能告诉我加两个按钮的方法:加载日历拾取后,一个是隐藏那个下拉箭头,一个是显示下拉箭头,很有用的。

我看了你的程序,但看不懂,只能直接借用了,呵呵...

对了,你的程序应有一个unload日历的,但不知道如何调用,能不能顺便告诉我???

谢了!

TA的精华主题

TA的得分主题

 楼主| 发表于 2006-8-23 12:45 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
QUOTE:
以下是引用五彩缤纷在2006-8-21 16:20:43的发言:

顶一下,希望楼主可以看到:

能不能告诉我加两个按钮的方法:加载日历拾取后,一个是隐藏那个下拉箭头,一个是显示下拉箭头,很有用的。

我看了你的程序,但看不懂,只能直接借用了,呵呵...

对了,你的程序应有一个unload日历的,但不知道如何调用,能不能顺便告诉我???

谢了!

关于下拉钮的隐藏,其实很简单,只要你看懂了代码是如何生成这个按钮的话,一切就迎韧而解了.

如果窗体上的某文本框挂接了日历拾取类,则对应的下按钮的名称为 文本框的名称+"_Button"构成

因此,假如你要隐藏或显示TextBox1的下拉钮,则可以使用如下的语句:

Me.Controls("TextBox1_Button").Visible = False '或True

其他类同...

不知缤纷兄明白了没有?

TA的精华主题

TA的得分主题

发表于 2006-8-23 12:48 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
收到,经测试是可以,谢谢楼主!

TA的精华主题

TA的得分主题

发表于 2006-8-23 18:30 | 显示全部楼层

经试用,非常好用。看了代码,难度要比《计算器》代码难。

可能因为日期系统的原因,星期位置有出入。

k = Weekday(DateValue(Mn & "/1/" & Yn))

我改成:k = Weekday(DateValue(Yn & "/" & Mn & "/1 ")),问题解决。

我还把这一段优化一下:

Function GetMonthEndNumber(Yn As Integer, Mn As Integer) As Integer    '返回某月的天数
    Dim ss, date1 As String
    Dim i, j As Integer
    ss = "101010110101"
    If Mn <> 2 Then
        GetMonthEndNumber = 30 + Val(Mid(ss, Mn, 1))
    Else
        '若是2月份,则需要专门确定
        For i = 28 To 32
            date1 = (Mn & "/" & i & "/" & Yn)    '利用了isdate函数来推定
            If IsDate(date1) Then
                j = i
            Else
                GetMonthEndNumber = j
                Exit For
            End If
        Next i
    End If
End Function

优化成:

Function GetMonthEndNumber(Yn As Integer, Mn As Integer) As Integer    '返回某月的天数
        If Mn = 12 Then
        GetMonthEndNumber = 31
        Else
        GetMonthEndNumber = Day(DateValue(Yn & "/" & Mn + 1 & "/1") - 1)
        End If
End Function

TA的精华主题

TA的得分主题

发表于 2006-12-5 20:51 | 显示全部楼层

TA的精华主题

TA的得分主题

发表于 2006-12-11 23:07 | 显示全部楼层

试用一下,确实不错,解决了别的机子没有日历控件的问题。

我在窗体中使用时,发现一个问题,就是如果欲选择的日期文本框处在框架之中时,日历显示位置就不正确了,不是显示在日期文本框的下方,也不会随窗体位置移动而移动,而是固定在窗口的一个固定位置,希望楼主能解决这个问题。

 

6tQdOWS0.rar (42.19 KB, 下载次数: 41)

 

二,如果不选择日期,要按ESC退出,这种方式不大习惯,如果能改成在日历窗体外任一位置点一下鼠标,就自动消失,那该多好呀!

TA的精华主题

TA的得分主题

发表于 2006-12-22 13:40 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册

辛苦了,真的十分感谢!

TA的精华主题

TA的得分主题

发表于 2007-3-27 21:24 | 显示全部楼层
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

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

GMT+8, 2024-11-23 04:10 , Processed in 0.043575 second(s), 7 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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