代码执行时除了使用MsgBox进行确认或显示信息外,很多时候为了避免频繁地修改代码中变量取值,需要动态获取输入信息,如文本、阈值、操作区域等,就需要用到输入框

InputBox函数
InputBox函数返回的是一个字符串(String)。即使用户输入的是数字,返回的也是类似 “123” 的文本形式,须用 Val 函数进行转换
示例1:通过InputBox函数输入数字
Dim userInput As StringDim userNumber As DoubleuserInput = InputBox("请输入新员工人数:", "输入信息")' 如果用户输入了数字,如"15",userInput是字符串"15",不能直接参与算术运算'需要使用Val进行转换userNumber = Val(userInput)' 现在userNumber是数值15,可以用于计算msgbox "员工总数是: " & (userNumber + 200) & "人"
需要注意:如果在输入框中输入非数字,如字符,InputBox函数本身不会进行校验,均可提交成功

若需要对输入的内容进行校验,需要单独编写代码
示例2:点击“取消”操作
当用户按下“取消”按钮或Esc键时,函数会返回一个空字符串(””),因此我们可以根据返回值是否为空来判断
Dim userInput As StringuserInput = InputBox("请输入:")' 检查结果是否为空字符串If userInput = "" Thenmsgbox "您取消了输入。"Exit Sub ' 或执行其他退出操作Elsemsgbox "您输入的是:" & userInputEnd If
如果只是需要用户输入一段文本,使用InputBox函数就足够了。但如果还需要输入数字、选择单元格区域,或者希望有内置的输入验证,那么就需要使用Application.InputBox方法了

代码Application.InputBox方法
与InputBox相比,Application.InputBox方法是一个功能更强大的交互工具,它不仅能获取用户输入,还能通过数据类型控制、输入验证等高级功能
示例1:输入数字
Dim userValue As Variant '推荐使用Variant类型接收返回值,以容纳各种可能的结果
' 提示用户输入一个数字
userValue = Application.InputBox(Prompt:="请输入一个数字:", Title:="数字输入", Type:=1)
' 判断用户是否取消
If userValue = False Then
msgbox "用户取消了输入。"
Exit Sub
End If
' 如果程序执行到这里,说明用户输入了有效的数字
msgbox "您输入的数字是:" & userValue
以上代码执行时会弹出输入框,并且对输入数据进行校验,除非输入数字,否则不予以通过。当用户取消操作时,返回 False,这有助于与用户输入空内容的情况进行区分,因此我们可以使用If userValue = False来判断是否点击了“取消”按键

示例2:输入操作区域Range大小
Dim rng As Range
On Error Resume Next '忽略下一步可能出现的错误
Set rng = Application.InputBox(Prompt:="请用鼠标选择一个单元格区域:", Title:="区域选择", Type:=8)
On Error GoTo 0 '恢复正常的错误处理
If rng Is Nothing Then
msgbox "您取消了操作或未选择有效区域。"
Exit Sub
End If
msgbox "您选择的区域是:" & rng.Address
'接下来可以编写对rng区域的数据处理代码
执行以上代码会弹出提示框:

比如,用鼠标选中A1:G10区域

该方式选择区域的好处主要有两点:
一是避免将单元格地址在代码中“写死”(硬编码),使代码能灵活处理不同位置和大小的数据区域,通用性更强
二是用户可以直接通过鼠标选择单元格区域,无需手动输入地址,特别适合不熟悉单元格引用格式的用户
通过以上两个示例代码,我们可以看出,决定方法返回值类型并起到关键作用的参数是是
Type,它的灵魂,不仅决定返回值类型并能自动进行基础的数据验证
Application.InputBox
以下是最常用的类型代码,还可以将多个类型代码相加,让输入框接受多种类型的数据。例如,Type:=1 + 2表示允许输入数字或文本
0:公式;1:数字;2:文本;4:逻辑值;8:单元格区域;16:错误值;64:数值数组

结束语
掌握以上两种InputBox的用法,能够让我们的VBA程序更加智能,代码执行起来也更加友好,赶快用起来吧
好了,今天的分享到此结束了,咱么下期继续
公众号同时也在不间断地分享免费的编程案例,如果想学习更多的编程知识,无论是用来提升自动化办公效率还是想提升自我,都可以关注我的公众号“努力鸭是黑色的”,解锁更多的VBA技能

