ImageVerifierCode 换一换
格式:PDF , 页数:156 ,大小:6.57MB ,
资源ID:10119957      下载积分:12 金币
验证码下载
登录下载
邮箱/手机:
图形码:
验证码: 获取验证码
温馨提示:
支付成功后,系统会自动生成账号(用户名为邮箱或者手机号,密码是验证码),方便下次登录下载和查询订单;
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

开通VIP
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.zixin.com.cn/docdown/10119957.html】到电脑端继续下载(重复下载【60天内】不扣币)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

开通VIP折扣优惠下载文档

            查看会员权益                  [ 下载后找不到文档?]

填表反馈(24小时):  下载求助     关注领币    退款申请

开具发票请登录PC端进行申请。


权利声明

1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,个别因单元格分列造成显示页码不一将协商解决,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前可先查看【教您几个在下载文档中可以更好的避免被坑】。
5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
6、文档遇到问题,请及时联系平台进行协调解决,联系【微信客服】、【QQ客服】,若有其他问题请点击或扫码反馈【服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【版权申诉】”,意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:4009-655-100;投诉/维权电话:18658249818。

注意事项

本文(Excel-VBA常用技巧-第08章.控件和用户窗体.pdf)为本站上传会员【曲****】主动上传,咨信网仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知咨信网(发送邮件至1219186828@qq.com、拔打电话4009-655-100或【 微信客服】、【 QQ客服】),核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载【60天内】不扣币。 服务填表

Excel-VBA常用技巧-第08章.控件和用户窗体.pdf

1、VBA常用技巧目录VBA常用技巧.1第8章 控件与用户窗体.4技巧1 限制文本框的输入.4技巧2 文本框添加右键快捷菜单.6技巧3 文本框回车自动输入.10技巧4 自动选择文本框内容.11技巧5 设置文本框数据格式.12技巧6 限制文本框的输入长度.14技巧7 将光标返回文本框中.15技巧8 文本框的自动换行.17技巧9 多个文本框数据相加.19技巧10 控件跟随活动单元格.20技巧11 高亮显示按钮.21技巧12 组合框和列表框添加列表项的方法.2312-1 使用RowSource属性添加列表项.2312-2 使:用 List 2412-3 使用Additem方法添加列表项.25技巧13 去

2、除列表框数据源的重复值和空格.27技巧14 移动列表框条目.29技巧15 允许多项选择的列表框.32技巧16 多列组合框和列表框的设置.3516-1 多列组合框和列表框添加列表项.3516-2 多列列表框写入工作表.37技巧17 输入时逐步提示信息.39技巧18 二级组合框.46技巧19 使用DTP控件输入日期.48技巧20 使用RefEdit控件选择区域.51技巧21 如何注册控件.52技巧22 遍历控件的方法.5522-1 使用名称中的变量遍历控件.5522-2 使用对象类型遍历控件.5722-3 J lJ .5822-4 使用名称中的变量遍历图形.5922-5 使用FormControl

3、Type属性遍历图形.60技巧23 使微调框最小变动量小于1.61技巧24 不打印工作表中的控件.6324-1设置控件格式.6324-2 设置控件的 printobjcet属性.65技巧25 在框架中使用滚动条.65技巧26 使用多页控件.67技巧27 标签文字垂直居中对齐.69技巧28 使用TabStrip控件.71技巧29 显示GIF动画图片.73技巧30 播放Flash文件.76技巧31 在工作表中添加窗体控件.7831-1 使用 AddFormControl 方法.7931-2 使用Add方法.81技巧32 在工作表中添加ActiveX控件.8332-1 使用Add方法.8432-2

4、使用 AddOLEObject 方法.86技巧 33 使用 spreadsheet 控件.87技巧 34 使用 Listview 控件.9034-1 使用Listview控件显示数据列表.9034-2 在Listview控件中使用复选框.9334-3 调整 Listview 控件的行星巨.9534-4 在Listview控件中排序.9834-5 Listview控件的图标设置.99技巧35 调用非模式窗体.102技巧36 进度条的制作.10436-1 使用进度条控件.10436-2 使用标签控件.106技巧37 使用Tree View控件显示层次.109技巧38 用户窗体添加图标.113技巧3

5、9 用户窗体添加最大最小化按纽.115技巧40 禁用窗体标题栏的关闭按钮.116技巧41屏蔽窗体标题栏的关闭按钮.117技巧42 无标题栏和边框的窗体.119技巧43 制作年月选择窗体.120技巧44 自定义窗体中的鼠标指针类型.123技巧45 调整窗体的显示位置.124技巧46 由鼠标确定窗体显示位置.126技巧47 用户窗体的打印.127技巧48 使用自定义颜色设置窗体颜色.129技巧49 在窗体中显示图表.13049-1 使用 Export 方法.13049-2 使用API函数.132技巧50 窗体运行时调整控件大小.133技巧51 在用户窗体上添加菜单.136技巧52 在用户窗体上添加

6、工具栏.140技巧53 使用代码添加窗体及控件.145技巧54 用户窗体的全屏显示.15154-1 设置用户窗体为应用程序的大小.15154-2 根据屏幕分率进设置.152第8章控件与用户窗体技巧1 限制文本框的输入用户在使用文本框输入数据时,往往希望能限制输入数据的类型,比如只能输入数字。但是没有内置的属性能限制在文本框中只能输入数字,只能在文本框的事件过程中使用代码 来测试输入的是哪类字符,然后只允许输入数字字符和一个“号、一个号,如下面 的代码所示。#001#002Private Sub TextBoxl_KeyPress(ByVai KeyANSI As MSForms.Returni

7、nteger)Select Case KeyANSI#003Case Asc(0)To Asc(9)#004Case Asc(H-H)#005If InStr(1,Me.TextBoxl.Text,0 Or _#006Me.TextBoxl.SelStart 0 Then#007KeyANSI=0#008End If#009Case Asc(n.)#010If InStr(1,Me.TextBoxl.Text,.)0 Then#011KeyANSI=0#012End If#013Case Else#014KeyANSI=0#015End Select#016End Sub代码解析:文本框的Ke

8、yPress事件过程,测试键盘输入的是哪类字符,只允许输入数字字符和一 个号、一个号。KeyPress事件的语法如下:Private Sub object_KeyPress(ByVai KeyANSI As MSForms.Returninteger)参数Object是必需的,一个有效的对象。参数KeyANSI是可选的,整数值,代表标准的数字ANSI键代码。第2行代码使用Case日se语句测试文本框KeyPress事件的KeyANSI参数值。第3行代码,如果键盘输入的是0到9之间的数字字符,则允许输入。如果想在文本 框中允许其它类型的字符输入,在此句代码中列出允许输入的字符即可。第4行到第8行

9、代码,如果键盘输入的是号,先使用InStr函数测试文本框中是否 已有号,如果InStr函数返回值大于0,说明文本框中已有号。接下来使用文本 框的SelStart属性来测试插入点,如果文本框的SelStart属性值大于0,说明号的插 入点不是第一个。如果以上两个条件中有任何一个成立,将KeyAscii参数值设置为0,使 文本框只能在第一位输入一个“号。第9行到第12行代码,如果键盘输入的是号的话,使用InStr函数测试文本框中 是否已有号,如果已有一号,将KeyAscii参数值设置为0,使文本框只能输入一个 号。第13、14行代码,如果键盘输入的是其他字符则将KeyAscii参数值设置为0,使文

10、本 框不能输入其他字符。经过以上设置文本框只允许输入数字字符和一个“J号、一个号,但是能输入中 文字符。如果希望限制中文字符的输入,可以在文本框的Change事件中进行设置,如下面 的代码所示。#001Private Sub TextBoxl_Change()#002Dim i As Integer#003Dim s As String#004With TextBoxl#005For i=1 To Len(.Text)#006s=Mid(.Text,i,1)#007Select Case s#008Case.A n-0 To 9H#009Case Else#010.Text=Replace(.

11、Text,s,)#011End Select#012Next#013End With#014 End Sub代码解析:文本框的Change事件,判断输入的字符是否为数字字符和号、号,如果不 是则使用Replace函数将文本框中输入的其他字符替换成空白。第5、6行代码在文本框输入的所有字符中循环。第8行代码列出允许输入的字符。如果想在文本框中允许其它字符输入,在此句代码中 列出即可。第9、10行代码,如果不是允许输入的字符,使用Replace函数替换成空白。经过以上的设置,文本框中只能在第一位输入一个“号、一个号和“0”到“9”的数字。技巧2 文本框添加右键快捷菜单VBA中的控件没有提供右键快捷

12、菜单,用户可以使用Excel中的命令栏自己添加右键 快捷菜单。步骤1:按vAlt+F11组合键进入VBE窗口,单击菜单“插入”一“模块”,在其代码 窗口输入以下代码:Action_Pasten,#001Private ActiveTB As MSForms.TextBox#002Public Sub CreateShortCutMenu()#003Dim ShortCutMenu As CommandBar#004Dim ShortCutMenuItem As CommandBarButton#005Dim sCaption As Variant#006Dim iFaceld As Varia

13、nt#007Dim sAction As Variant#008Dim i As Integer#009sCaption=Array(剪切(&C),”复制(&T)”,“贝占粘(&P),#010iFaceld=Array(21A 19,22,1786)#011sAction=Array(Action_Cut,HAction_CopyH,ActionDelete)一,”删除(&D)”)#012 On Error Resume Next#013 mandBars(Shortcut).Delete#014 Set ShortCutMenu=mandBars.Add(Shortcut,msoBarPop

14、up)#015 With ShortCutMenu#016 For i=0 To 3#017 Set ShortCutMenuItem=.Controls.Add(msoControlButton)#018 With ShortCutMenuItem#019.Caption=sCaption(i)#020.facelD=Vai(iFaceld(i)#021.OnAction=sAction(i)#022 End With#023 Next#024 End With#025 End Sub代码解析:第1行代码,在模块级别中声明变量ActiveTB是用来对应窗体中的文本框所触发的所 有事件的变量。

15、CreateShortCutMenu过程用来仓U建标题为“Shortcut”的右键快捷菜单,并添加4个菜单项。关于自定义右键快捷菜单请参阅错误!未找到引用源。#001Public Sub ShowPopupMenu(txtCtr As MSForms.TextBox)#002Dim Action As Variant#003Set ActiveTB=txtCtr#004With mandBars(Shortcut)#005.Controls(1).Enabled=txtCtr.SelLength 0#006.Controls(2).Enabled=.Controls(1).Enabled#00

16、7.Controls(3).Enabled=txtCtr.CanPaste#008.Controls(4).Enabled=.Controls(1).Enabled#009.ShowPopup#010End With#011End Sub代码解析:ShowPopupMenu过程根据文本框中字符的选中状态设置右键快捷菜单菜单项的Enabled属性后使用ShowPopup方法显示右键快捷菜单。第5行代码,如果当前文本框中已有选中的字符则“剪切”按钮有效。第6行代码,如果当前文本框中已有选中的字符则“复制”按钮有效。第7行代码,如果剪贴板中包含对象支持的数据。则“贴粘”按钮有效。第8行代码,如果当前

17、文本框中已有选中的字符则“删除”按钮有效。第9行代码,显示快捷菜单。#001Public Sub Action_Cut()#002ActiveTB.Cut#003End Sub#004Public Sub Action_Copy()#005ActiveTB.Copy#006End Sub#007Public Sub Action_Paste()#008ActiveTB.Paste#009End Sub#010Public Sub Action_Delete()#011Dim s As String#012With ActiveTB#013s=.SelText#014.Value=Replace

18、Value,s,#015End With#016End Sub代码解析:Action_Cut过程是快捷菜单中单击“剪切”菜单项所运行的过程。使用Cut方法将当 前选中的文本框中的文本删除并移至剪贴板。Action_Copy过程是快捷菜单中单击“复制”菜单项所运行的过程。使用Copy方法将 文本框选中的文本复制到剪贴板上。Action_Paste过程是快捷菜单中单击“贴粘”菜单项所运行的过程。使用Paste方法 把剪贴板上的内容传送到一个文本框中。Action_Delete过程是快捷菜单中单击“贴粘”菜单项所运行的过程。使用Replace函 数将文本框中选中的文本的文本替换成空字符。#001

19、 Public Sub DeleteShortCutMenu()#002 On Error Resume Next#003 mandBars(Shortcut).Delete#004 End Sub代码解析:DeleteShortCutMenu过程删除创建的右键快捷菜单。步骤2:在VBE窗口中,单击菜单“插入”一“用户窗体”,在窗体上添加两个文本框 控件。双击窗体,在其代码窗口中输入下面的代码。#001 Private Sub UserForm_Initialize()#002 Call CreateShortCutMenu#003 End Sub#004 Private Sub TextBo

20、xl_MouseUp(ByVai Button As Integer,ByVai Shift As Integer,ByVai X As Single,ByVai Y As Single)#005 If Button=2 Then ShowPopupMenu ActiveControl#006 End Sub#007 Private Sub TextBox2_MouseUp(ByVai Button As Integer,ByVai Shift As Integer,ByVai X As Single,ByVai Y As Single)#008 If Button=2 Then ShowPo

21、pupMenu ActiveControl#009 End Sub#010 Private Sub UserForm_QueryClose(Cancel As Integer,CloseMode As Integer)#011 Call DeleteShortCutMenu#012 End Sub代码解析:第1行到第3行代码,窗体的Initialize事件,在窗体初始化时运行CreateShortCutMenu 过程创建右键快捷菜单。第4行到第9行代码,文本框的MouseUp事件,当用户右健单击文本框时运行 ShowPopupMenu过程在选中的菜单项上显示右键快捷菜单。第10行到第12行代码

22、窗体的QueryClose事件,在关闭窗体时运行 DeleteShortCutMenu过程删除右键快捷菜单。窗体运行后,右键单击文本框显示右键快捷菜单,如图2-1所示。快捷菜单演示图2-1文本框快捷菜单技巧3 文本框回车自动输入在使用文本框向工作表输入数据时,为了加快输入速度,可以利用文本框的KeyDown 事件,回车后自动输入并清空文本框,如下面的代码所示。#001 Private Sub TextBoxl_KeyDown(ByVai KeyCode As MSForms.Returninteger,ByVai Shift As Integer)#002 With TextBoxl#003

23、 If Len(Trim(.Value)0 Then#004 If KeyCode=vbKeyReturn Then#005 Sheetl.Range(HA65536H).End(xlUp).Offset(1A 0)=.Value#006.Text=#007 End If#008 End If#009 End With#010 End Sub代码解析:文本框的KeyDown事件,在输入数据并按vEnter键后自动将数据录入到工作表A列 最后一个非空单元格的下一个单元格中。KeyDown事件在按下键盘按键时发生,语法如下:Private Sub object_KeyDown(ByVai KeyC

24、ode As MSForms.Returninteger,ByVaiShift As fmShiftState)参数object是必需的,一个有效的对象。参数KeyCode是必需的,代表被按下的键的键代码。参数SMft是可选的,Shift、Ctrl和Alt的状态。第3行代码,为了防止误输入空白数据,使用Len函数和Trim函数检查文本框内是 否为有效数据。第4行代码,根据KeyCode参数值判断是否按下了回车键。如果用户按下了回车键,KeyCode 参数返回常数 vbKeyReturn。第5、6行代码,将文本框数据输入到工作表A列的最后一个单元格内,同时清空文本 框内容准备下一次输入。技巧4

25、自动选择文本框内容如果希望光标进入文本框时能自动选择文本框内容,可以在文本框的MouseUp事件中 来完成,如下面的代码所示。#001 Private Sub TextBoxl_MouseUp(ByVai Button As Integer,ByVai Shift As Integer,ByVai X As Single,ByVai Y As Single)#002 With TextBoxl#003 If Button=2 Then#004.SelStart=0#005.SelLength=Len(.Text)#006 End If#007 End With#008 End Sub代码解析:

26、文本框的MouseUp事件,在光标进入文本框释放鼠标右键时自动选择文本框内容。MouseUp事件在用户释放鼠标按键时发生,语法如下:Private Sub object_MouseUp(ByVai Button As fmButton,ByVai Shift As fmShiftStateA ByVai X As Single,ByVai Y As Single)参数object是必需的,一个有效的对象。参数Button是可选的,设置引起该事件的鼠标按键的整数值,如表格4-1所示。表格4-1 Button参数值常数值说明fmButtonLeft1按下左键。fmButtonRight2按下右键。

27、fmButtonMiddle3按下中键。参数Shift是可选的,Shift、Ctrl和Alt的状态。参数X和参数Y是可选的,窗体、框架或页的位置的横坐标与纵坐标。第3行到第6行代码,如果用户进入文本框释放鼠标右键,设置文本框的SelStart属 性为0,SelLength属性为文本框的全部字符数。SelStart属性指定选中文本的起点,语法如下:object.SelStart=Long参数object是必需的,一个有效的对象。参数Long是可选的,指定选中文本的起点。SelLength属性指定文本框或组合框的文本部分中选中的字符数,语法如下:object.SelLength=Long参数obj

28、ect是必需的,一个有效的对象。参数Long是可选的,指定选中的字符数。运行窗体,当光标进入文本框释放鼠标右键时自动选择文本框内容,如图4-1所示。图4-1自动选择文本框内容技巧5 设置文本框数据格式文本框在用来输入数据时,除了限制输入的数据类型外,还可以设置文本框的数据格式,如下面的代码所示。#001 Private Sub TextBoxl_Exit(ByVai Cancel As MSForms.ReturnBoolean)#002 TextBoxl=Format(TextBoxl,”0.00”)#003 End Sub#004 Private Sub TextBox2_Exit(ByV

29、ai Cancel As MSForms.ReturnBoolean)#005 TextBox2=Format(TextBox2A”0.00”)#006 End Sub代码解析:文本框的Exit事件过程,在文本框输入数据时使用Format函数格式化为两位小数格式。控件的Exit事件在同一窗体中的一个控件即将把焦点转移到另一个控件之前发生,语 法如下:Private Sub object_Exit(ByVai Cancel As MSForms.ReturnBoolean)参数Object是必需的,一个有效的对象。参数Cancel是必需的,事件状态。如果设置为False表示由该控件处理这个事件(

30、默 认方式)。设置为True表示由应用程序处理这个事件,并且焦点留在当前控件上。当文本框在输入完数据失去焦点时使用Format函数格式化自定义数值格式。Format 函数语法如下:Format(expression,format,firstdayofweek,firstweekofyear)参数expression是必需的,任何有效的表达式。参数format是可选的,有效的命名表达式或用户自定义格式表达式。参数firstdayofweek是可选的,常数,表示一星期的第一天。参数firstweekofyear是可选的,常数,表示一年的第一周。在本例中,将文本框的数据格式化成自定义的两位小数的数值

31、格式,关于Format函数 格式化日期和时间等其他数据请参阅VBA中Format函数的帮助。#001 Private Sub TextBoxl_Change()#002 TextBox3=Format(Vai(TextBoxl)*Vai(TextBox2),“0.00”)#003 End Sub#004 Private Sub TextBox2_Change()#005 TextBox3=Format(Vai(TextBoxl)*Vai(TextBox2),0.00)#006 End Sub代码解析:文本框的Change事件过程,在两个文本框输入完数据后,使用文本框的Change事件 使Tex

32、tBox3显示其相乘的金额并格式化为两位小数的数据格式。Change事件在控件的Value属性改变时发生,语法如下:Private Sub object_Change()参数object是必需的,一个有效的对象。Change事件过程可以使显示在控件上的数据同步或一致。在本例中,当TextBoxl或 TextBox2的数据发生改变时,两者相乘的金额的金额也随之改变并在TextBox3中显示。因为文本框的数据类型是文本字符串,不能直接进行计算的,所以计算前先使用Vai 函数转换为数字,才能进行计算。运行窗体,输入数据后格式化为两位小数的数据格式,如图5-1所示。图5-1 设置文本框的数据格式技巧6

33、限制文本框的输入长度在使用文本框输入数据时,可能希望限制能输入的字符长度,即只能输入一定长度的字 符,超过设置数值就不能输入,这时可以通过设置文本框的MaxLength属性来实现,如下 面的代码所示。#001 Private Sub Worksheet_Activate()#002 Me.TextBoxl.MaxLength=6#003 End Sub代码解析:工作表的激活事件过程,将文本框的MaxLength属性设置为6,使文本框只能输入6 个字符,超过6个字符即不能输入。应用于文本框控件的MaxLength属性规定用户可以在文本框中输入的最多字符数,语法如下:object.MaxLengt

34、h=Long参数object是必需的,一个有效的对象。参数Long是可选的,整数,表示所允许的字符数。如果将MaxLength属性设置为0,表示只要内存允许则没有限制。技巧7将光标返回文本框中在用文本框往工作表录入数据时,一般会在录入到工作表前验证输入的数据是否正确,如果错误,则清空文本框内容,提示用户重新输入。但此时光标已经不在文本框中,需要重 新选择文本框才能输入。可以在Exit事件中可以设置Cancel参数值使光标停留在当前文本框中,如下面的代码 所示。#001Private Sub TextBoxl_Exit(ByVai Cancel AsMSForms.ReturnBoolean)#

35、002With TextBoxl#003If.Text And Len(Trim(.Text)15 And Len(Trim(.Text)18 Then#004.Text=#005MsgBox”身份证号码录入错误!”#006Cancel=True#007End If#008End With#009End Sub代码解析:文本框的Exit事件,在输入身份证号码后即将把焦点转移到录入按钮控件之前检查输 入的身份证号码是否正确。Exit事件在一个控件从同一窗体的另一个控件实际接收到焦点之前发生,语法如下:Private Sub object_Exit(ByVai Cancel As MSForms.

36、ReturnBoolean)Cancel参数为事件状态。False表示由该控件处理这个事件(这是默认方式)。True表 示由应用程序处理这个事件,并且焦点应当留在当前控件上。第3行代码,使用Len函数和Trim函数检查输入的身份证号码是否为15位或18位。第4行到第6行代码,如果输入的身份证号码不正确,清空文本框以便重新输入并提 示用户,设置Cancel参数为True使光标停留在文本框中。在Exit事件中之所以把文本框为空也做为通过验证的条件之一,因为如果不加上“TextBoxLTextc”这一条件,那么在窗体显示后,如果用户取消输入或关闭输入窗体,也会提示输入错误。所以在录入到工作表之前再验

37、证文本框是否为空,如下面的代码所示。#001Private Sub CommandButtonl_Click()#002With TextBoxl#003If.Text Then#004Sheetl.Range(na65536).End(xlUp).Offset(1A 0)=.Text#005.Text=#006Else#007MsgBox”请输入身份证号码!”#008End If#009.SetFocus#010End With#011End Sub代码解析:输入按钮的Click事件,把文本框数据录入到工作表A列最后一个单元格中并重新选择 文本框准备下一次输入。第3行代码,在输入到工作表前检

38、查文本框是否为空。第4、5行代码,如果文本框不为空,录入数据到工作表并清空文本框内容。第7行代码,如果文本框为空,提示用户输入数据。第8行代码,使用SetFocus方法将光标返回到文本框中以便重新输入。SetFocus方法将焦点移动到对象的实例中,语法如下:object.SetFocus参数object.是必需的,一个有效的对象。运行窗体,在输入框中输入身份证号码后自动验证输入的数据,如果输入数据错误,清 空文本框并提示用户重新输入,如图7-1所示。图7-1 提示用户重新输入技巧8文本框的自动换行在使用使用文本框显示或录入一段很长的文本时,需要将文本框设置成多行显示,否则 文本内容只能在一行中

39、显示,示例代码如下:#001Private Sub UserForm_Initialize()#002With TextBoxl#003.Wordwrap=True#004.MultiLine=True#005.Text=Space(4)&VBA(Visual Basic for Application)是”_#006&”微软公司为了加强Of fic软件的二次开发能力而附加”_#007&”于其中的编程语言。VBA的确非常强大,其与VB完全一”_#008&”致的语法结构,高效控制。ffic对象模型的能力,令无”_#009&”数人为之折腰。利用VBA,几乎可以在Of fic里面做任何”_#010&

40、其他程序能做的事情。但是,应该清楚的认识到VBA是依”_#011&”托其宿主-Excel(或其他Office组件)而存在的,对”_#012&”于Exc1用户来讲,VBA只不过是锦上添花的东西,切不可”_#013&”本末倒置,捡了芝麻丢了西瓜,把明明能够利用Exc1内置”_#014&”功能完成的任务,硬是搬到VBA里面去做,以为用代码实现”_#015&”就是高人一头的表现。其实,真正的高手,会尽量发挥”_#016&Excel自身的威力,不到万不得已的时候是不会去Alt+Fll的。”#017 End With#018 End Sub代码解析:窗体的lEtialize事件过程,在窗体显示时将文本框

41、设置成多行显示文本。第3行代码设置文本框的Wordwrap属性。Wordwrap属性指定一个控件的内容在行 末是否自动换行,语法如下:obj ect.Wordwrap=Boolean参数object是必需的,一个有效的对象。参数Boolean是可选的,控件是否扩展以适应文本的大小,设置为True,文本换行,设置为False,文本不换行。第4行代码设置文本框的MultiLine属性。MultiLine属性规定控件能否接受和显示多行 文本,语法如下:object.MultiLine=Boolean参数object是必需的,一个有效的对象。参数Boolean是可选的,控件是否支持多行文本,设置为Tr

42、ue,以多行显示文本,设 置为False,不多行显示文本。如果将多行文本框的MultiLine属性设置为False,则文本框 的所有字符都将合并为一行,包括非打印字符(如,回车和换行)。对于既支持Wordwrap属性又支持MultiLine属性的控件,当MultiLine属性为False 时,Wordwrap属性被忽略。运行窗体,文本框显示如图8-1所示。文本框的自动换行VBA(Visual Basic for Appli cati on)是微软公 司为了加强软件的二次笄发能力而附加于其中 的编程语言。VB期确非常强大,其与VI;完全一致的 语法结构,高效控制对象模型的能力,令无数人为之折腰。

43、利用VBA,几乎可以在Office里面做任何其他程序能做的事情。但是,应该清差的认识到VB娓依托其宿主Excel(或其他0珪ice组件)而 存在的,对于Excel用户来讲,VB炽不过是锦上忝花 的东西,切不可本末倒置,捡了芝麻丢了西瓜,把明 明能够利用Excel内置功能完成的任务,硬是搬到VBA 里面去做,以为用代码实现就是高人一头的表现。其 实,真正的高手,会尽量发挥Excel自身的威力,不 到万不得已的时候是不会去图8-1文本框自动换行技巧9多个文本框数据相加在技巧5中,我们在TextBoxI TextBox2中输入完数据后,利用文本框的Change 事件使TextBox3显示其两者相乘的

44、金额,但是如果窗体中有多个文本框,需要在每一个文 本框的Change事件中写上相同的重复代码,因此使用类模块可以简化代码。在附件的窗体有七个文本框,其中六个用来输入数据,一个用来显示其他六个文本框相 加后的合计数,首先打开VBE,插入一个类模块建立一个类,类模块的名字就是类的名字 修改为“cmds”,在类模块中输入下面的代码:Public WithEvents cmd As MSForms.TextBox代码解析:使用Public语句声明变量cmd是用来响应由TextBox对象触发的事件的对象变量。在窗体的Initialize事件中写入下面的代码:#001#002Dim col As New

45、CollectionPrivate Sub UserForm_Initialize()#003Dim i As Integer#004Dim myc As cmds#005For i=1 To 6#006Set myc=New cmds#007Set myc.cmd=Me.Controls(TextBox&i)#008col.Add myc#009Next#010Set myc=Nothing#011End Sub代码解析:第1行代码在模块顶部声明变量col的类型为集合。第5行到第9行代码,将窗体中的六个文本框赋给col集合。(关于类模块请参阅论坛中有关的资料。)在类模块中写入下面的代码:#0

46、01Private Sub cmd_Change()#002Dim i As Integer#003Dim Dval As Double#004For i=1 To 6#005Dval=Dval+Vai(UserForml.Controls(TextBox&i)#006 UserForml.TextBox?.Value=Dval#007 Next#008 End Sub代码解析:窗体中的六个文本框统一的Change事件,当任何一个文本框中的数据发生变化时,所 有文本框相加的合计数显示在最后一个文本框中。运行窗体在文本框中输入数据结果如图9-1所示。图9-1 多个文本框数据相加技巧10 控件跟随

47、活动单元格在工作表中使用控件时一般都把控件放在工作表的上部,如果工作表中数据较多,当页 面滚动到工作表下面的区域时,控件会昌开当前可视区域,这时操作起来很不方便。解决方 法除了冻结工作表的第一行放置控件的外,还可以使控件出现在选定的单元格位置,如下面 的代码所示。#001 Private Sub Worksheet_SelectionChange(ByVai Target As Range)#002 With mandButtonl#003.Top=Target.Top#004.Left=Target.Left+Target.Width#005 End With#006 End Sub代码解析

48、工作表的Selectionchange事件,使工作表中的按钮控件出现在选定单元格的右边。第3行代码,设置按钮的Top属性等于选定单元格的Top属性。Top属性设置对象顶 端到第一行顶端的距离。第4行代码,设置按钮的Left属性等于选定单元格的Left属性加上选定单元格的宽度,即按钮出现在选定单元格的右边。Left属性设置对象左边界至A列左边界的距离。当单击工作表区域的任一单元格,按钮出现在单元格的右边,如图10-1所示。图10-1控件跟随活动单元格技巧11 高亮显示按钮为了达到当鼠标掠过按钮时以高亮和凸起显示按钮的效果,可以在窗体和按钮的 MouseMove事件中进行模拟,如下面的代码所示。

49、001Private Sub CommandButtonl_MouseMove(ByVaiButton As Integer,By VaiShift AsInteger,ByVai X As Single,ByVai Y As Single)#002With mandButtonl#003.BackColor=&HFFFF00#004.Width=62#005.Height=62#006.Top=69#007.Left=31#008End With#009End Sub#010Private Sub UserForm_MouseMove(ByVai ButtonAs Integer,ByVa

50、i Shift AsInteger,ByVai X As Single,ByVai Y As Single)#011With mandButtonl#012.BackColor=Me.BackColor#013.Width=60#014.Height=60#015.Top=7 0#016.Left=32#017End With#018End Sub代码解析:窗体和按钮的MouseMove事件过程,以高亮和凸起显示按钮。当用户在窗体中移动鼠标时,分别在窗体和按钮的MouseMove事件设置按钮的 BackColor属性值,指定按钮的背景色,当鼠标移动到按钮时以高亮显示,当鼠标移动到窗 体时恢复原

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2025 宁波自信网络信息技术有限公司  版权所有

客服电话:4009-655-100  投诉/维权电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服