📜  if 输入框取消 vba (1)

📅  最后修改于: 2023-12-03 15:31:21.951000             🧑  作者: Mango

介绍:如何在 VBA 中取消输入框

在 VBA 中,我们通常使用输入框来获取用户输入的值,但是有时候用户可能会取消输入框,这种情况下我们需要在代码中进行处理。

本文将介绍如何在 VBA 中取消输入框,具体如下:

步骤一:使用 On Error 语句

我们可以使用 On Error 语句来捕获用户取消输入框的情况。具体代码如下:

Sub CancelInputBox()
    Dim userInput As String
    On Error Resume Next
    userInput = InputBox("请输入内容:")
    If Err.Number <> 0 Then
        MsgBox "用户取消了输入框。"
    Else
        MsgBox "用户输入了:" & userInput
    End If
End Sub

上面的代码中,如果用户取消了输入框,Err.Number 将不为 0,我们就可以弹出一个消息框告诉用户取消了输入框。如果用户输入了值,我们就把它弹出来。

步骤二:使用类模块

除了上面的方法外,我们也可以使用类模块来封装输入框操作。我们需要创建一个类模块,并添加一个公共函数来获取用户的输入值,如果用户取消了输入框,这个函数就会返回一个空值。具体代码如下:

'在新模块中添加类模块:
'名称:InputBoxCancel
'代码如下:
Option Explicit

Private m_cancelled As Boolean
Private m_prompt As String
Private m_title As String

Public Sub Show(prompt As String, Optional title As String)
    m_prompt = prompt
    m_title = title
    m_cancelled = False
End Sub

Public Function UserInput(Optional defaultValue As String) As String
    Dim result As String
    On Error Resume Next
    result = InputBox(m_prompt, m_title, defaultValue)
    If Err.Number <> 0 Then
        m_cancelled = True
    End If
    UserInput = IIf(m_cancelled, vbNullString, result)
End Function

上面的代码中,我们定义了一个 Show 函数,用来设置输入框的提示信息和标题。UserInput 函数用来获取用户的输入值,如果用户取消了输入框,返回空值。

使用这个类模块的代码如下:

Sub CancelInputBox()
    Dim userInput As String
    Dim inputBoxCancel As New InputBoxCancel
    inputBoxCancel.Show "请输入内容:"
    userInput = inputBoxCancel.UserInput
    If inputBoxCancel.Cancelled Then
        MsgBox "用户取消了输入框。"
    Else
        MsgBox "用户输入了:" & userInput
    End If
End Sub

注意,在这里我们使用了一个 Cancelled 属性来判断用户是否取消了输入框。如果 Cancelled 属性为 True,说明用户取消了输入框。

总结

本文介绍了如何在 VBA 中取消输入框。我们可以使用 On Error 语句或者类模块来实现。希望这篇文章能够帮助你解决这个问题。