|
楼主 |
发表于 2009-3-13 15:20
|
显示全部楼层
第6部分 使用对话框
技巧76 使用InputBox方法
在Excel中输入简单的数据可以使用InputBox函数显示的对话框,但是如果输入的数据类型不匹配时,过程运行时会产生意外错误。为了避免此类情况发生,可以使用另一种获得用户输入的方式——InputBox方法。
76-1 输入指定类型的数据
使用InputBox方法输入数据时可以指定数据的类型,如下面的代码所示。- #001 Sub dInput()
- #002 Dim dInput As Double
- #003 Dim r As Integer
- #004 r = Sheet1.Range("A65536").End(xlUp).Row
- #005 dInput = Application.InputBox(Prompt:="请输入数字:", Type:=1)
- #006 If dInput <> False Then
- #007 Sheet1.Cells(r + 1, 1).Value = dInput
- #008 Else
- #009 MsgBox "你已取消了输入!"
- #010 End If
- #011 End Sub
复制代码 代码解析:
dInput过程使用InputBox方法显示一个提示用户输入数字的对话框。
InputBox方法显示一个接收用户输入的对话框,返回此对话框中输入的信息,语法如下:
expression.InputBox(Prompt, Title, Default, Left, Top, HelpFile, HelpContextId, Type)
参数expression是必需的,返回一个Application对象。
参数Prompt是必需的,作为对话框消息显示的字符串表达式。
参数Title是可选的,作为显示在对话框标题栏中的字符串表达式。如果省略Title参数,将使用默认的标题。
参数Default是可选的,在对话框显示时出现在文本框中的初始值。如果省略Default参数,则文本框为空。
参数Left是可选的,指定对话框相对于屏幕左上角的 x 坐标。
参数Top是可选的,指定对话框相对于屏幕左上角的 y 坐标。
参数HelpFile和参数HelpContextId是可选的,为对话框提供上下文相关的帮助和编号,如果提供了其中一个参数,则必须提供另一个参数,两者缺一不可。
参数Type是可选的,指定返回的数据类型。如果省略Type参数,对话框将返回文本。
InputBox方法的语法和InputBox函数的语法相似,最大的区别在于最后一个参数——Type。通过Type参数可以指定返回值的数据类型,表格中列出了Type参数可以使用的数值。
这些数值可以相加使用,如果希望返回数字和文本,可以将Type参数设置为1+2。
InputBox方法与InputBox函数相比,优点是内置的出错处理。在第5行代码中将Type参数值设置为1,这意味着对话框只能输入数值。当用户输入的不是数值时,显示一个如图所示的消息框提示输入错误。
第6行到第10行代码,如果用户单击对话框的“确定”按钮,将用户输入的数字写入工作表的A列单元格。如果用户单击对话框的“取消”按钮,则显示一条提示消息。
InputBox方法和InputBox函数的另一个区别是,当用户单击“取消”按纽时返回False而不是长度为零的字符串。
运行dInput过程将显示一个提示用户输入数字的对话框,如图所示。
注意 在VBA代码中,Application.InputBox 调用的是InputBox方法,不带对象识别符的InputBox调用的是InputBox 函数。
76-2 获得单元格区域地址
InputBox方法很适合用户选择工作表单元格区域,并对所选择的单元格区域进行操作,如下面的代码所示。- #001 Sub RngInput()
- #002 Dim rng As Range
- #003 On Error GoTo line
- #004 Set rng = Application.InputBox("请使用鼠标选择单元格区域:", , , , , , , 8)
- #005 rng.Interior.ColorIndex = 15
- #006 line:
- #007 End Sub
复制代码 代码解析:
RngInput过程使用InputBox方法显示一个对话框,提示用户在工作表中选择一个单元格区域,并改变所选单元格区域内部的颜色。
第3行代码,错误处理语句。因为当对话框显示后,如果用户单击“取消”按钮,将显示一错误信息,如图所示,所以必需使用On Error GoTo语句来绕过错误。
第4行代码,使用Set语句将用户选择的单元格区域赋给变量rng。当Type参数设置为8时,将返回一个Range对象,必须用Set 语句将结果指定给一个Range对象。
第5行代码,改变用户所选单元格区域内部的颜色。
运行RngInput过程,将显示一个对话框,提示用户在工作表中选择一个单元格区域,并改变所选单元格区域内部的颜色,如图所示。
|
|