【VBA研究】VBA的InputBox函数和Application的InputBox方法

本文介绍了VBA编程中InputBox函数和Application.InputBox方法的区别和使用。InputBox函数返回字符串,需手动用Val转换数值;Application.InputBox则能根据type参数返回不同类型值,如文本、数字或单元格引用。用户取消操作时,函数返回空字符串,而方法返回False。示例代码展示了不同type设置下的效果,以及输入框位置调整的差异。

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

xpos和ypos这两个可选参数(或者left和top)决定输入框在屏幕上的显示位置,两个输入框样式略有不同。

根据实验,inputobx函数中的xpos和ypos这两个参数有效果(不过数值很大,远大于屏幕分辨率),不指定用默认值时,输入框居中上,位置较好。样式如下图所示:


inputobx方法中的left和top这两个参数不管用,输入框的位置由系统指定,不过你可以挪动输入框的位置,再次运行时,输入框的位置就是你刚才挪到的位置。样式和上面函数的输入框差不多,感觉布局更紧凑合理一点,如下图所示:



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值