ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

VBA常用技巧代码解析

    [复制链接]

TA的精华主题

TA的得分主题

发表于 2009-3-28 10:24 | 显示全部楼层
本帖已被收录到知识树中,索引项:开发帮助和教程
太强大了,感谢版主整理分享

TA的精华主题

TA的得分主题

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

感谢!

谢谢版主分享!!!!!太实用了!!!!!谢谢!!!!

TA的精华主题

TA的得分主题

发表于 2009-3-28 17:16 | 显示全部楼层
谢谢版主分享!!你太有才了,而且无私啊!!!!敬佩之至!!!

TA的精华主题

TA的得分主题

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

你知道吗?

你对世界贡献太大了!你一下改变多少无知的人们!同样也改变了我,呵呵!

TA的精华主题

TA的得分主题

发表于 2009-3-28 17:53 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
万分感激,给了我重学VBA的动力!

TA的精华主题

TA的得分主题

发表于 2009-3-28 20:26 | 显示全部楼层

TA的精华主题

TA的得分主题

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

第8部分 控件与用户窗体

技巧104         将光标返回文本框中
       在用文本框往工作表录入数据时,一般会在录入到工作表前验证输入的数据是否正确,如果错误,则清空文本框内容,提示用户重新输入。但此时光标已经不在文本框中,需要重新选择文本框才能输入。
       可以在Exit事件中可以设置Cancel参数值使光标停留在当前文本框中,如下面的代码所示。
  1. #001  Private Sub TextBox1_Exit(ByVal Cancel As MSForms.ReturnBoolean)
  2. #002      With TextBox1
  3. #003          If .Text <> "" And Len(Trim(.Text)) <> 15 And Len(Trim(.Text)) <> 18 Then
  4. #004              .Text = ""
  5. #005              MsgBox "身份证号码录入错误!"
  6. #006              Cancel = True
  7. #007          End If
  8. #008      End With
  9. #009  End Sub
复制代码
代码解析:
       文本框的Exit事件,在输入身份证号码后即将把焦点转移到录入按钮控件之前检查输入的身份证号码是否正确。
       Exit事件在一个控件从同一窗体的另一个控件实际接收到焦点之前发生,语法如下:
Private Sub object_Exit( ByVal Cancel As MSForms.ReturnBoolean)
       Cancel参数为事件状态。False表示由该控件处理这个事件(这是默认方式)。True表示由应用程序处理这个事件,并且焦点应当留在当前控件上。
       第3行代码,使用Len函数和Trim函数检查输入的身份证号码是否为15位或18位。
       第4行到第6行代码,如果输入的身份证号码不正确,清空文本框以便重新输入并提示用户,设置Cancel参数为True使光标停留在文本框中。
       在Exit事件中之所以把文本框为空也做为通过验证的条件之一,因为如果不加上“TextBox1.Text <> ""”这一条件,那么在窗体显示后,如果用户取消输入或关闭输入窗体,也会提示输入错误。所以在录入到工作表之前再验证文本框是否为空,如下面的代码所示。
  1. #001  Private Sub CommandButton1_Click()
  2. #002      With TextBox1
  3. #003          If .Text <> "" Then
  4. #004              Sheet1.Range("a65536").End(xlUp).Offset(1, 0) = .Text
  5. #005              .Text = ""
  6. #006          Else
  7. #007              MsgBox "请输入身份证号码!"
  8. #008          End If
  9. #009              .SetFocus
  10. #010      End With
  11. #011  End Sub
复制代码
代码解析:
       输入按钮的Click事件,把文本框数据录入到工作表A列最后一个单元格中并重新选择文本框准备下一次输入。
       第3行代码,在输入到工作表前检查文本框是否为空。
       第4、5行代码,如果文本框不为空,录入数据到工作表并清空文本框内容。
       第7行代码,如果文本框为空,提示用户输入数据。
       第8行代码,使用SetFocus方法将光标返回到文本框中以便重新输入。
       SetFocus方法将焦点移动到对象的实例中,语法如下 :
object.SetFocus
       参数object.是必需的,一个有效的对象。
       运行窗体,在输入框中输入身份证号码后自动验证输入的数据,如果输入数据错误,清空文本框并提示用户重新输入,如图所示。
Snap1.jpg

[ 本帖最后由 yuanzhuping 于 2009-3-28 23:26 编辑 ]

技巧104 将光标返回文本框中.rar

9.33 KB, 下载次数: 1326

TA的精华主题

TA的得分主题

 楼主| 发表于 2009-3-28 23:25 | 显示全部楼层

第8部分 控件与用户窗体

技巧105         文本框的自动换行
       在使用使用文本框显示或录入一段很长的文本时,需要将文本框设置成多行显示,否则文本内容只能在一行中显示,示例代码如下:
  1. #001  Private Sub UserForm_Initialize()
  2. #002      With TextBox1
  3. #003          .WordWrap = True
  4. #004          .MultiLine = True
  5. #005          .Text = Space(4) & "VBA(Visual Basic for Application)是" _
  6. #006                  & "微软公司为了加强Office软件的二次开发能力而附加" _
  7. #007                  & "于其中的编程语言。VBA的确非常强大,其与VB完全一" _
  8. #008                  & "致的语法结构,高效控制Office对象模型的能力,令无" _
  9. #009                  & "数人为之折腰。利用VBA,几乎可以在Office里面做任何" _
  10. #010                  & "其他程序能做的事情。但是,应该清楚的认识到VBA是依" _
  11. #011                  & "托其宿主─—Excel(或其他Office组件)而存在的,对" _
  12. #012                  & "于Excel用户来讲,VBA只不过是锦上添花的东西,切不可" _
  13. #013                  & "本末倒置,捡了芝麻丢了西瓜,把明明能够利用Excel内置" _
  14. #014                  & "功能完成的任务,硬是搬到VBA里面去做,以为用代码实现" _
  15. #015                  & "就是高人一头的表现。其实,真正的高手,会尽量发挥" _
  16. #016                  & "Excel自身的威力,不到万不得已的时候是不会去<Alt+F11>的。"
  17. #017      End With
  18. #018  End Sub
复制代码
代码解析:
       窗体的Initialize事件过程,在窗体显示时将文本框设置成多行显示文本。
       第3行代码设置文本框的WordWrap属性。WordWrap属性指定一个控件的内容在行末是否自动换行,语法如下:
object.WordWrap [= Boolean]
       参数object是必需的,一个有效的对象。
       参数Boolean是可选的,控件是否扩展以适应文本的大小,设置为True,文本换行,设置为False,文本不换行。
       第4行代码设置文本框的MultiLine属性。MultiLine属性规定控件能否接受和显示多行文本,语法如下:
object.MultiLine [= Boolean]
       参数object是必需的,一个有效的对象。
       参数Boolean是可选的,控件是否支持多行文本,设置为True,以多行显示文本,设置为False,不多行显示文本。如果将多行文本框的MultiLine属性设置为False,则文本框的所有字符都将合并为一行,包括非打印字符(如,回车和换行)。
       对于既支持WordWrap属性又支持MultiLine属性的控件,当MultiLine属性为False时,WordWrap属性被忽略。
       运行窗体,文本框显示如图所示。
Snap1.jpg

技巧105 文本框的自动换行.rar

11.06 KB, 下载次数: 1171

评分

3

查看全部评分

TA的精华主题

TA的得分主题

发表于 2009-3-29 10:55 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
版主辛苦了,跟班学习!
羡慕你们这么牛啊

TA的精华主题

TA的得分主题

发表于 2009-3-29 13:11 | 显示全部楼层
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

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

GMT+8, 2024-11-25 03:27 , Processed in 0.050491 second(s), 7 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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