VBA中使用InputBox方法

VBA中使用InputBox方法[日期:2008-03-01]来源: 作者:admin[字体:大 中 小]除了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方法将会返回文本格式。类型参数的值列在表4-3里。图4-12 别忘记使用对象浏览器来搜索VB函数和方法表4-3 InputBox方法返回的数据类型值返回的数据类型0公式1数字2字符串(文本)4逻辑值(True或False)8单元格引用,作为一个Range对象16错误值,例如#N/A64数组如果你使用3作为Type参数的话,用户将既可以输入一个数字也可以输入一个文本。这个值是将1(数字)和2(字符串)加和而得到的。InputBox方法很适合那些需要用户选择工作表单元格范围的VBA程序。1. 关闭对象浏览器,如果你已经打开了的话2. 在模块Sample8里面,输入下列过程WhatRange:Sub WhatRange()Dim newRange As RangeDim tellMe As StringtellMe = "Use the mouse to select a range:"Set newRange = Application.InputBox(prompt:=tellMe, _Title:="Range to format", _Type:=8)newRange.NumberFormat = "0.00"newRange.SelectEnd Sub过程WhatRange开始于一对象变量的声明——newRange。试回想一下第三章,对象变量指向数据的地址。用户选择的单元格被赋值给对象变量newRange。注意变量名称前面的关键字Set:Set newRange = Application.InputBox(prompt:=tellMe, _Title:="Range to format", _Type:=8)类型参数(Type:=8)使用户能够选择任何单元格区域。当用户选中单元格区域时,下句指令:newRange.NumberFormat = "0.00"改变所选单元格的格式。最后一句选择用户加亮的区域。3. 运行过程WhatRange。VB显示一个对话框,提示用户在工作表里选择一个单元格区域。4. 使用鼠标选择你要的单元格,当鼠标在单元格上拖动时,VB就会将选择的区域引用到对话框的编辑框里面。图4-13 使用Excel的InputBox方法,你可以从用户处获得区域地址5. 你选择了单元格后,点击对话框上的确定按钮,被选择的区域就已经设置好格式了。要检查是否按你的意思设置了,你可以在该区域的任意单元格里输入一个整数,这个数字应该显示为两位小数。6. 重新运行该过程,并且当出现对话框时,点击取消按钮。如果你在选择了一个单元格或者一个区域后点击确定按钮,过程WhatRange将工作正常。不幸地是,当你点击取消按钮或Esc按钮,VB将显示一错误信息——“要求对象”。当你点击错误对话框上的调试按钮,VB就会加亮导致错误的代码行。因为你不希望在取消对话框时选择任何单元格,所以你必须想个法子忽略VB显示的这个错误。使用一个专门的语句,On Error GoTo 标志,你就可以绕过错误的发生。该指令的语法如下:On Error GoTo 标志这个指令应该放在变量声明行的下面。标志可以是除了VB关键字之外的任何你想要的词语。如果错误发生时,VB就会直接跳到该特别的标志,如下面步骤8所示。7. 选择“运行”-“重新设置”以取消正在运行的程序。8. 将过程WhatRange修改为如下所示WhatRange2:Sub WhatRange2()Dim newRange As RangeDim tellMe As StringOn Error GoTo VeryEndtellMe = "Use the mouse to select a range:"Set newRange = Application.InputBox(prompt:=tellMe, _Title:="Range to format", _Type:=8)newRange.NumberFormat = "0.00"newRange.SelectVeryEnd:End Sub9. 运行程序WhatRange2,一旦出现对话框时就点击取消按钮。注意,这次程序没有产生错误。当VB遭遇错误时,就会跳到位于程序结尾处的标志VeryEnd。位于错误和标志VeryEnd之间的语句被忽略了(原文不当:The statements placed between On Error Goto VeryEnd and the VeryEnd label are ignored)。你将在第十三章里面找到更多的诱捕VBA程序里错误的例子。技巧4-14 子程序和函数:你应该使用哪个?创建子程序的时候:n 需要执行一些动作n 需要获取用户信息n 需要在屏幕上显示信息创建函数的时候:n 需要不只一次的做一些简单的计算n 需要做复杂的计算n 需要不只一次地调用相同的指令块需要检查某些表达正确与否 我等你用尽了所有的哀伤;而你眼中却有我所不懂的凄凉。

VBA中使用InputBox方法

相关文章:

你感兴趣的文章:

标签云: