除了InputBox函数之外,还有InputBox方法,如果你激活对象浏览器,然后搜索“inputbox”,VB将显示两个InputBox——一种为Excel库,另一种为VBA库(见图4-12)。InputBox方法在Excel库里面可用,它的语法和本章前面讲的InputBox函数的语法有轻微差别,它的语法为:
expression.InputBox(Prompt, [Title], [Default], [Left], [Top], [HelpFile],
[HelpContextID], [Type] )
所有方括号里面的参数都是可选的。Prompt(提示)参数是显示于对话框上的信息;Title是对话框的标题;而Default是对话框上文本框里的初始值。Left和Top参数是明确对话框在屏幕上的位置。这些参数的输入值的单位是Point(1/72英寸)。当用户点击帮助按钮时,参数HelpFile和HelpContextID明确帮助文件名称以及某个明确的帮助主题。InputBox方法的最后一个参数——Type(类型)明确返回的数据类型。如果你忽略这个参数,InputBox方法将会返回文本格式。类型参数的值列在表里。
如果你使用3作为Type参数的话,用户将既可以输入一个数字也可以输入一个文本。这个值是将1(数字)和2(字符串)加和而得到的。InputBox方法很适合那些需要用户选择工作表单元格范围的VBA程序。
Sub WhatRange()
Dim newRange As Range
Dim tellMe As String
tellMe = "Use the mouse to select a range:"
Set newRange = Application.InputBox(prompt:=tellMe, _
Title:="Range to format", _
Type:=8)
newRange.NumberFormat = "0.00"
newRange.Select
End Sub
类型参数(Type:=8)使用户能够选择任何单元格区域。当用户选中单元格区域时,下句指令:
newRange.NumberFormat = "0.00"
改变所选单元格的格式。最后一句选择用户加亮的区域。
注意:重新运行该过程,并且当出现对话框时,点击取消按钮。如果你在选择了一个单元格或者一个区域后点击确定按钮,过程WhatRange将工作正常。不幸地是,当你点击取消按钮或Esc按钮,VB将显示一错误信息——“要求对象”。当你点击错误对话框上的调试按钮,VB就会加亮导致错误的代码行。因为你不希望在取消对话框时选择任何单元格,所以你必须想个法子忽略VB显示的这个错误。使用一个专门的语句,On Error GoTo 标志,你就可以绕过错误的发生。该指令的语法如下:
On Error GoTo 标志
这个指令应该放在变量声明行的下面。标志可以是除了VB关键字之外的任何你想要的词语。如果错误发生时,VB就会直接跳到该特别的标志,如下面步骤所示:
Sub WhatRange2()
Dim newRange As Range
Dim tellMe As String
On Error GoTo VeryEnd
tellMe = "Use the mouse to select a range:"
Set newRange = Application.InputBox(prompt:=tellMe, _
Title:="Range to format", _
Type:=8)
newRange.NumberFormat = "0.00"
newRange.Select
VeryEnd:
End Sub