在Excel VBA中我们经常需要和用户进行交互,此时我们会用到Inputbox这个函数。
其实,Inputbox作为同一函数名,确有2种不同的用法,一个是作为VBA下面的函数;再一个是作为Excel应用级的函数来使用。
下面我们分别看下,2种不同方法的区别。
一、VBA函数定义:
InputBox(Prompt,[Title, (Defaultl,[Pos,[YPos,(HelFilel, [Context)) As String
参数说明:
prompt:必要参数,即InputBox对话框中的显示文本。
title:可选参数,即InputBox对话框的名称,默认情况为主程序名。
default:可选参数,输入框默认的内容,如果不设置此参数,默认情况下输入框为空。
xpos与ypos:可选参数,用于设置InputBox对话框在主程序窗口的位置,默认情况下在窗口的中心。
helpfile与context:可选参数,即帮助文件和与帮助文件相关的上下文编号。
代码实例:
Sub test()
InputBox "请输入信息!","Test","在此处输入",1600,1600, "D:Applications�-Zip�-zip.chm", 0
End Sub
二、应用程序级函数Application.InputBox定义
Application.InputBox(Prompt As String, [Titlel, (Default, (Leftl, [Topl, (HelpFilel, (HelpContextID), [Typel)
参数说明:
type:可选参数,用于明确返回数据的类型。
如果设置为1,则输入框中必须输入数字类型。
返回数据的类型,主要有0,1,2,4,8,16,64,分别代表公式、数字、文本、逻辑值(True或False)、单元格对象(Range)、错误值(如#N/A)、数组值。
在这里,值得注意的是,如果返回数据类型为8,即为单元格对象Range类型。那么我们可以实现,在Excel里面框选单元格或区域来输入单元格地址。这样,对于我们选择单元格区域是非常方便的。
如果返回数据类型为Range类型,那么我们需要用到Set来接收返回值,如下:
Set rng = Application.InputBox("请输入区域地址",,,,,,,8)
这样,我们就可以使用For Each循环来遍历Range对象,方法如下:
For Each x in rng
Next
结合上面返回值,这里给出一个代码实例作为参考。
Sub sel()
Set Rng = Application.InputBox("请输入区域地址", , , , , , , 8)
For Each x In Rng
If x = [f10] Then
MsgBox (x.Row)
End If
Next
End Sub
本文转载自:https://www.yunzhi88.com/study/excel_vba/2023/0109/2748.html