095 禁用工具栏的自定义 在Excel中,用户可以通过依次单击菜单“视图”→“工具栏”→“自定义”,显示“自定义”选项卡来调整菜单栏和工具栏。 如果不希望用户使用“自定义”选项卡来调整菜单栏和工具栏,可以禁用工具栏的自定义功能,如下面的代码所示。 Sub nCustomize() Application.CommandBars.DisableCustomize= True End Sub 代码解析: nCustomize 过程禁用工具栏的自定义功能,应用于CommandBars 集合对象的DisableCustomize属性设置是否禁用工具栏的自定义。如果禁用,返回True,否则返回False。 用于启用工具栏的自定义的代码是: Sub yCustomize() Application.CommandBars.DisableCustomize= False End Sub运行nCustomize过程,禁用工具栏的自定义对话框,自定义菜单项消失,。
▲096 屏蔽所有的命令栏 在使用自定义的操作界面时,需要屏蔽Excel中所有的命令栏,可以使用下面的代码。 Sub Shielding_1() Dimi As Integer Fori = 1 To Application.CommandBars.Count Application.CommandBars(i).Enabled = False Next End Sub 代码解析: Shielding_1过程使用For...Next语句遍历Excel命令栏,并将其Enabled属性设置为False,使之无效。 还可以使用For Each...Next 语句遍历所有的CommandBars对象,代码如下: Sub Shielding_2() DimCmd As CommandBar ForEach Cmd In Application.CommandBars Cmd.Enabled = False Next End Sub 运行Shielding_1或Shielding_2过程工作簿。 在需要恢复时只需将Enabled属性设置为True即可,如下面的代码所示。 Sub Recovery_1() Dimi As Integer Fori = 1 To Application.CommandBars.Count Application.CommandBars(i).Enabled = True Next End Sub Sub Recover_2() DimCmd As CommandBar ForEach Cmd In Application.CommandBars Cmd.Enabled = True Next End Sub 代码解析: Recovery_1和Recover_2过程分别使用For...Next语句和For Each...Next 语句遍历所有的CommandBars对象,设置其Enabled属性为True,显示所有的命令栏。
▲097 恢复Excel的命令栏 如果用户经常添加、删除Excel的菜单和工具栏而又没有及时恢复的话,有时会破坏Excel默认的用户界面,即使用Reset方法也不能恢复成初始状态。 此时可以在电脑的本地硬盘中查找扩展名为*.xlb的文件,该文件在电脑中的位置会因Excel版本的不同而不同,在XP操作系统中,该文件位于系统盘的Documents and Settings\Administrator\Application Data\Microsoft\Excel文件夹,其中Administrator是电脑的用户名。找到它最简单的方法是使用Windows的搜索功能。按<Win+F>组合键调出Windows的搜索窗口,然后用*.xlb为目标在本地硬盘中进行搜索。 如果搜索没有结果,请检查“更多高级选项”中是否选中“搜索隐藏的文件和文件夹”选项。 对Excel用户界面的任何修改都会保存在*.xlb文件中,找到后删除该文件,然后重新启动Excel。Excel会重新创建一个*.xlb文件,而菜单和工具栏也会全部恢复成初始状态。
▲098 限制文本框的输入 用户在使用文本框输入数据时,往往希望能限制输入数据的类型,比如只能输入数字。但是没有内置的属性能限制在文本框中只能输入数字,只能在文本框的事件过程中使用代码来测试输入的是哪类字符,然后只允许输入数字字符和一个“-”号、一个“.”号,如下面的代码所示。 Private Sub TextBox1_KeyPress(ByVal KeyANSI AsMSForms.ReturnInteger) SelectCase KeyANSI Case Asc('0') To Asc('9') Case Asc('-') If InStr(1,Me.TextBox1.Text,'-')> 0 Or _ Me.TextBox1.SelStart > 0 Then KeyANSI = 0 End If Case Asc('.') If InStr(1,Me.TextBox1.Text,'.')> 0 Then KeyANSI = 0 End If Case Else KeyANSI = 0 EndSelect 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事件中进行设置,如下面的代码所示。 Private Sub TextBox1_Change() Dimi As Integer Dims As String WithTextBox1 For i = 1 To Len(.Text) s = Mid(.Text,i,1) Select Case s Case '.','-','0'To '9' Case Else .Text = Replace(.Text,s,““) End Select Next EndWith End Sub 代码解析: 文本框的Change事件,判断输入的字符是否为数字字符和“-”号、“.”号,如果不是则使用Replace函数将文本框中输入的其他字符替换成空白。 第5、6行代码在文本框输入的所有字符中循环。 第8行代码列出允许输入的字符。如果想在文本框中允许其它字符输入,在此句代码中列出即可。 第9、10行代码,如果不是允许输入的字符,使用Replace函数替换成空白。 经过以上的设置,文本框中只能在第一位输入一个“-”号、一个“.”号和“0”到“9”的数字。 |
|
来自: wdmexcel > 《Excel Vba》