【Excel VBA 基础编程】第26讲:让Excel对话更智能,掌握两种InputBox的精准用法

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

【Excel VBA 基础编程】第26讲:让Excel对话更智能,掌握两种InputBox的精准用法

InputBox函数

InputBox函数返回的是一个字符串(String)。即使用户输入的是数字,返回的也是类似 “123” 的文本形式,须用 Val 函数进行转换

示例1:通过InputBox函数输入数字


    Dim userInput As String
    Dim userNumber As Double
    userInput = InputBox("请输入新员工人数:", "输入信息")
    ' 如果用户输入了数字,如"15",userInput是字符串"15",不能直接参与算术运算
    '需要使用Val进行转换
    userNumber = Val(userInput)
    ' 现在userNumber是数值15,可以用于计算
    msgbox "员工总数是: " & (userNumber + 200) & "人"

需要注意:如果在输入框中输入非数字,如字符,InputBox函数本身不会进行校验,均可提交成功

【Excel VBA 基础编程】第26讲:让Excel对话更智能,掌握两种InputBox的精准用法

若需要对输入的内容进行校验,需要单独编写代码

示例2:点击“取消”操作

当用户按下“取消”按钮或Esc键时,函数会返回一个空字符串(””),因此我们可以根据返回值是否为空来判断


    Dim userInput As String
    userInput = InputBox("请输入:")
    ' 检查结果是否为空字符串
    If userInput = "" Then
         msgbox "您取消了输入。"
         Exit Sub ' 或执行其他退出操作
    Else
        msgbox "您输入的是:" & userInput
    End If

如果只是需要用户输入一段文本,使用InputBox函数就足够了。但如果还需要输入数字、选择单元格区域,或者希望有内置的输入验证,那么就需要使用Application.InputBox方法了

【Excel VBA 基础编程】第26讲:让Excel对话更智能,掌握两种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来判断是否点击了“取消”按键

【Excel VBA 基础编程】第26讲:让Excel对话更智能,掌握两种InputBox的精准用法

示例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区域的数据处理代码


   

执行以上代码会弹出提示框:

【Excel VBA 基础编程】第26讲:让Excel对话更智能,掌握两种InputBox的精准用法

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

【Excel VBA 基础编程】第26讲:让Excel对话更智能,掌握两种InputBox的精准用法

该方式选择区域的好处主要有两点:

一是避免将单元格地址在代码中“写死”(硬编码),使代码能灵活处理不同位置和大小的数据区域,通用性更强

二是用户可以直接通过鼠标选择单元格区域,无需手动输入地址,特别适合不熟悉单元格引用格式的用户

通过以上两个示例代码,我们可以看出,决定方法返回值类型并起到关键作用的参数是
Type,它

Application.InputBox
的灵魂,不仅决定返回值类型并能自动进行基础的数据验证

以下是最常用的类型代码,还可以将多个类型代码相加,让输入框接受多种类型的数据。例如,Type:=1 + 2表示允许输入数字或文本

0:公式;1:数字;2:文本;4:逻辑值;8:单元格区域;16:错误值;64:数值数组

【Excel VBA 基础编程】第26讲:让Excel对话更智能,掌握两种InputBox的精准用法

结束语

掌握以上两种InputBox的用法,能够让我们的VBA程序更加智能,代码执行起来也更加友好,赶快用起来吧

好了,今天的分享到此结束了,咱么下期继续

公众号同时也在不间断地分享免费的编程案例,如果想学习更多的编程知识,无论是用来提升自动化办公效率还是想提升自我,都可以关注我的公众号“努力鸭是黑色的”,解锁更多的VBA技能

© 版权声明

相关文章

暂无评论

none
暂无评论...