ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

VBA常用技巧代码解析

    [复制链接]

TA的精华主题

TA的得分主题

 楼主| 发表于 2009-3-24 17:35 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
本帖已被收录到知识树中,索引项:开发帮助和教程
询问
袁版主:您好!您编写的这些代码技巧都是适用03版的EXCEL,好像有些对07版的不适用耶???

是的,所有的代码都是在2003版中进行过测试,2007版的有些代码不适用,我现在用的是2003版的,不喜欢2007版的界面,所以一直没用,现在看来落后了,使用2007版的人很多了。
关于进度条宏代码与执行的宏同步事宜
袁版主:您好!再次麻烦您。通常相关资料制作的进度条都是他们自己举的例子进行运算,来测试进度条的进度。现在请问实际要运行的代码怎样与进度条同步呀?谢谢!下面是测试的进度条代码与本人需要运行的工资条的宏,怎样才能在运行工资条的宏时与进度条同步?

关于这个问题以前也讨论过,一般认为如果程序中有循环,那么可以把进度条嵌入到程序的循环中,可以做到同步,否则很难做到同步运行。

TA的精华主题

TA的得分主题

 楼主| 发表于 2009-3-24 17:38 | 显示全部楼层

第7部分 菜单和工具栏

1-7部分Word文档
VBA常用技巧(1-7).part1.rar (1.91 MB, 下载次数: 6739)
VBA常用技巧(1-7).part2.rar (1.55 MB, 下载次数: 5718)
第7部分 菜单和工具栏附件
第7章 菜单和工具栏.rar (173.95 KB, 下载次数: 3894)

TA的精华主题

TA的得分主题

发表于 2009-3-24 20:45 | 显示全部楼层

TA的精华主题

TA的得分主题

发表于 2009-3-24 21:50 | 显示全部楼层
好久没来了,资料整理的这么全,难为几位版主了,收藏了先

TA的精华主题

TA的得分主题

发表于 2009-3-24 23:00 | 显示全部楼层

TA的精华主题

TA的得分主题

发表于 2009-3-25 00:36 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
太精彩了,期待一些窗控件的技巧,诸如listview等

TA的精华主题

TA的得分主题

发表于 2009-3-25 01:47 | 显示全部楼层
不知庐山真面目,总缘高人竹叶深!

TA的精华主题

TA的得分主题

 楼主| 发表于 2009-3-25 08:07 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助

第8部分 控件的应用

技巧98         限制文本框的输入
       用户在使用文本框输入数据时,往往希望能限制输入数据的类型,比如只能输入数字。但是没有内置的属性能限制在文本框中只能输入数字,只能在文本框的事件过程中使用代码来测试输入的是哪类字符,然后只允许输入数字字符和一个“-”号、一个“.”号,如下面的代码所示。
  1. #001  Private Sub TextBox1_KeyPress(ByVal KeyANSI As MSForms.ReturnInteger)
  2. #002      Select Case KeyANSI
  3. #003          Case Asc("0") To Asc("9")
  4. #004          Case Asc("-")
  5. #005              If InStr(1, Me.TextBox1.Text, "-") > 0 Or _
  6. #006                  Me.TextBox1.SelStart > 0 Then
  7. #007                  KeyANSI = 0
  8. #008              End If
  9. #009          Case Asc(".")
  10. #010              If InStr(1, Me.TextBox1.Text, ".") > 0 Then
  11. #011                  KeyANSI = 0
  12. #012              End If
  13. #013          Case Else
  14. #014              KeyANSI = 0
  15. #015      End Select
  16. #016  End Sub
复制代码
代码解析:
       文本框的KeyPress事件过程,测试键盘输入的是哪类字符,只允许输入数字字符和一个“-”号、一个“.”号。
KeyPress事件的语法如下:
Private Sub object_KeyPress( ByVal KeyANSI As MSForms.ReturnInteger)
       参数Object是必需的,一个有效的对象。
       参数KeyANSI是可选的,整数值,代表标准的数字ANSI 键代码。
       第2行代码使用Case Else语句测试文本框KeyPress事件的KeyANSI参数值。
       第3行代码,如果键盘输入的是0到9之间的数字字符,则允许输入。如果想在文本框中允许其它类型的字符输入,在此句代码中列出允许输入的字符即可。
       第4行到第8行代码,如果键盘输入的是“-”号,先使用InStr函数测试文本框中是否已有“-”号,如果InStr函数返回值大于0,说明文本框中已有“-”号。接下来使用文本框的SelStart 属性来测试插入点,如果文本框的SelStart 属性值大于0,说明“-”号的插入点不是第一个。如果以上两个条件中有任何一个成立,将KeyAscii参数值设置为0,使文本框只能在第一位输入一个“-”号。
       第9行到第12行代码,如果键盘输入的是“.”号的话,使用InStr函数测试文本框中是否已有“.”号,如果已有“.”号,将KeyAscii参数值设置为0,使文本框只能输入一个“.”号。
       第13、14行代码,如果键盘输入的是其他字符则将KeyAscii参数值设置为0,使文本框不能输入其他字符。
       经过以上设置文本框只允许输入数字字符和一个“-”号、一个“.”号,但是能输入中文字符。如果希望限制中文字符的输入,可以在文本框的Change事件中进行设置,如下面的代码所示。
  1. #001  Private Sub TextBox1_Change()
  2. #002      Dim i As Integer
  3. #003      Dim s As String
  4. #004      With TextBox1
  5. #005          For i = 1 To Len(.Text)
  6. #006              s = Mid(.Text, i, 1)
  7. #007              Select Case s
  8. #008                  Case ".", "-", "0" To "9"
  9. #009                  Case Else
  10. #010                      .Text = Replace(.Text, s, "")
  11. #011              End Select
  12. #012          Next
  13. #013      End With
  14. #014  End Sub
复制代码
代码解析:
       文本框的Change事件,判断输入的字符是否为数字字符和“-”号、“.”号,如果不是则使用Replace函数将文本框中输入的其他字符替换成空白。
       第5、6行代码在文本框输入的所有字符中循环。
       第8行代码列出允许输入的字符。如果想在文本框中允许其它字符输入,在此句代码中列出即可。
       第9、10行代码,如果不是允许输入的字符,使用Replace函数替换成空白。
       经过以上的设置,文本框中只能在第一位输入一个“-”号、一个“.”号和“0”到“9”的数字。

技巧98 限制文本框的输入.rar

9.9 KB, 下载次数: 1374

TA的精华主题

TA的得分主题

发表于 2009-3-25 08:10 | 显示全部楼层

感谢

谢谢袁版主及时地解答!其实对任何事物都有适应而渐进习惯的过程,本人刚开始用07版的也很不习惯,只是时间久了,就OK了。07增加了很多新功能!

TA的精华主题

TA的得分主题

发表于 2009-3-25 08:34 | 显示全部楼层
原帖由 yuanzhuping 于 2009-3-24 17:38 发表
1-7部分Word文档
481312
481313
第7部分 菜单和工具栏附件
481314

提问:袁版主,真是太辛苦了!此第7部分 菜单和工具栏附件中没有技巧97(恢复EXCEL命令栏)
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

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

GMT+8, 2024-11-15 07:22 , Processed in 0.048968 second(s), 7 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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