iamlaosong文
VBA编程时inputbox 有两种用法,一个是inputbox函数,一个是application.inputbox方法,两者用法差不多,差别在后者多了输入类型,导致返回值也有很大不同。
1、inputbox函数在输入字符串后点击“确认”按钮返回字符串,如果需要数值,可以用val函数转换,点击“取消”则返回空字符串。其用法如下:
InputBox(prompt[,title][,default][,xpos][,ypos][,helpfile,context])
该函数必须具有的参数是prompt,其它都是可选函数。
2、application.inputbox在输入字符串后点击“确认”按钮根据type类型返回不同类型的值,点击“取消”则返回逻辑值false,其用法如下:
application.inputbox(prompt,title,default,left,top,helpfile,helpcontextid,type)
同样也是prompt是必选参数,其它是可选参数。其中type为 0 返回文本,type为1返回数字 type为2返回公式 ,4 逻辑值 8单元格引用 16错误值 64数值数组。type不指定时,系统根据输入智能判断数据类型。
3、以下为一个例子,可以试试不同type的返回效果。
Sub a()
Dim message, title, default
Dim myvalue
message = "请输入一个公式"
title = "返回值演示"
default = "=2*pi()/360"
myvalue = Application.InputBox(prompt:=message, title:=title, default:=default, Type:=1)
MsgBox myvalue & "数据类型:" & TypeName(myvalue)
End Sub
当type为1或2时,系统会自动计算公式(可以包含单元格)的结果。
注: 当参数不按顺序传递时,需要加上参数名称,如上例所示,否则,按照下面格式:myvalue = Application.InputBox(message, title, default, , , , , 0)
后面四个逗号就是四个参数的占位符。
4、关于输入框的位置,用下面例子试试坐标变化以及点击不同按钮时的效果。
Sub b()
Dim message, title, default
Dim myvalue1, myvalue2
message = "请输入任意字符串"
title = "输入测试"
default = "iamlaosong"
myvalue1 = InputBox(message, title, default, 10000, 5000)
If myvalue1 = "" Then MsgBox "string length is 0."
myvalue2 = Application.InputBox(message, title, default, 10000, 5000, , , 2)
MsgBox myvalue1 & "===" & myvalue2 & "数据类型:" & TypeName(myvalue2)
End Sub
根据实验,inputobx函数中的xpos和ypos这两个参数有效果(不过数值很大,远大于屏幕分辨率),不指定用默认值时,输入框居中上,位置较好。样式如下图所示:
inputobx方法中的left和top这两个参数不管用,输入框的位置由系统指定,不过你可以挪动输入框的位置,再次运行时,输入框的位置就是你刚才挪到的位置。样式和上面函数的输入框差不多,感觉布局更紧凑合理一点,如下图所示: