ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

[分享]在窗体的文本框中实现日期的输入的几种方法

[复制链接]

TA的精华主题

TA的得分主题

 楼主| 发表于 2005-7-30 16:49 | 显示全部楼层
本帖已被收录到知识树中,索引项:窗体

ldhyob 版主 在第38楼的精品中,我有一个小小的补充:原作中,当在文本框中按按下Del或BackSpace键时,文本框的内容变成了“0000-00-00”,也就是要重新再输入年月日。我改进了一下,在哪里删除,哪里就变成“0”。代码如下,我觉得以下的代码还是可以精简的,请大家帮忙精简,谢谢!

Sub ggg() Select Case Me.TextBox1.SelStart Case 9 Me.TextBox1.Text = Left(Me.TextBox1.Text, 9) & 0 TextBox1.SelStart = 9 ' TextBox1.SelLength = 1 Case 8 Me.TextBox1.Text = Left(Me.TextBox1.Text, 8) & 0 & Right(Me.TextBox1.Text, 1) TextBox1.SelStart = 8 Case 7 Me.TextBox1.Text = Left(Me.TextBox1.Text, 7) & "-" & Right(Me.TextBox1.Text, 2) TextBox1.SelStart = 7 Case 6 Me.TextBox1.Text = Left(Me.TextBox1.Text, 6) & 0 & Right(Me.TextBox1.Text, 3) TextBox1.SelStart = 6 Case 5 Me.TextBox1.Text = Left(Me.TextBox1.Text, 5) & 0 & Right(Me.TextBox1.Text, 4) TextBox1.SelStart = 5 Case 4 Me.TextBox1.Text = Left(Me.TextBox1.Text, 4) & "-" & Right(Me.TextBox1.Text, 5) TextBox1.SelStart = 4 Case 3 Me.TextBox1.Text = Left(Me.TextBox1.Text, 3) & 0 & Right(Me.TextBox1.Text, 6) TextBox1.SelStart = 3 Case 2 Me.TextBox1.Text = Left(Me.TextBox1.Text, 2) & 0 & Right(Me.TextBox1.Text, 7) TextBox1.SelStart = 2 Case 1 Me.TextBox1.Text = Left(Me.TextBox1.Text, 1) & 0 & Right(Me.TextBox1.Text, 8) TextBox1.SelStart = 1 Case 0 Me.TextBox1.Text = 0 & Right(Me.TextBox1.Text, 9) TextBox1.SelStart = 0 End Select End Sub

0GLHukUu.rar (17.85 KB, 下载次数: 253)

TA的精华主题

TA的得分主题

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

你的帖子很精彩!我非常需要!帮忙改下吧

我想在你这个基础上增加一个文本框,输入格式改为如 2006 - 01 这样的形式,即去掉第几日,日历控件都帮不了我,你这个帖子让我看到了希望,但你的程序我看不明白,能替我改下吗?万分感谢!!

期望格式为 : 输入 2006 -01  至 2006 -08 ,起始日期最小为2006 - 01 最大为 2079 - 12

附件更清楚地说明下我的要求,感谢啊,大家帮帮忙吧

jk2sHTbs.rar (8.5 KB, 下载次数: 161)

TA的精华主题

TA的得分主题

发表于 2007-1-11 16:40 | 显示全部楼层

TA的精华主题

TA的得分主题

发表于 2005-7-30 17:31 | 显示全部楼层

可简化成这样:

Sub ggg() Dim i As Integer Dim ss As String ss = Me.TextBox1.Text i = Me.TextBox1.SelStart If Me.TextBox1.SelStart < 10 Then Me.TextBox1.Text = Left(ss, i) & Mid("0000-00-00", i + 1, 1) & Right(ss, 9 - i) Me.TextBox1.SelStart = i End If End Sub

[此贴子已经被作者于2005-7-30 17:36:17编辑过]

TA的精华主题

TA的得分主题

发表于 2005-7-25 12:48 | 显示全部楼层

TA的精华主题

TA的得分主题

发表于 2005-7-25 12:36 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
以下是引用foshan在2005-7-25 11:23:39的发言:

ldhyob 版主的作品太精彩了,谢谢!如果能实现在删除日期时,仍然能保留原有的”0000-00-00“格式就更好了。希望 ldhyob 版主 能再花些宝贵的时间来完成这项功能。

略作修改,增加用户若删除日期文本则恢复初始值"0000-00-00",已更新35楼附件.

TA的精华主题

TA的得分主题

发表于 2005-7-25 11:06 | 显示全部楼层

按楼主的要求,只利用一个文本框试做了一个.结合Change和KeyPress事件.供参考 d8D5fxol.rar (15.11 KB, 下载次数: 475)

[此贴子已经被作者于2005-7-25 12:34:52编辑过]

WtVHwBZr.rar

12.42 KB, 下载次数: 391

[分享]在窗体的文本框中实现日期的输入的几种方法

TA的精华主题

TA的得分主题

发表于 2005-7-23 16:52 | 显示全部楼层

TA的精华主题

TA的得分主题

发表于 2005-7-23 16:41 | 显示全部楼层

对于日期的判断是准确的,只是不能用MSGBOX,不过如果日期错误,就会选中这个日期,而且无法选择其它东西

TA的精华主题

TA的得分主题

发表于 2005-7-23 16:14 | 显示全部楼层

我做了一个类似的,请看看合不合要求,唉!其实我不是忘了,是不知道怎么的,用了MSGBOX后就没有焦点了,看看再说吧,没有什么技术含量的东西

DA6ejEN7.rar (9.96 KB, 下载次数: 387)
[此贴子已经被作者于2005-7-23 16:39:24编辑过]

AjzleCte.rar

6.98 KB, 下载次数: 351

如何在窗体的文本框中实现日期的输入?

您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

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

GMT+8, 2024-11-23 21:43 , Processed in 0.039955 second(s), 8 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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