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

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这两个参数有效果(不过数值很大,远大于屏幕分辨率),不指定用默认值时,输入框居中上,位置较好。样式如下图所示:

【VBA研究】VBA的InputBox函数和Application的InputBox方法_第1张图片

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

【VBA研究】VBA的InputBox函数和Application的InputBox方法_第2张图片

你可能感兴趣的:(VBA_Excel)