vba - 无法正确取消Application.Inputbox

标签 vba excel runtime-error inputbox

因此,此代码将一直有效,直到您决定点击取消或使用 X 关闭输入框窗口,此时它会为您提供:

运行时错误“424”:

需要对象

然后它会在调试中突出显示这部分代码:

Set ranC = Application.InputBox("选择 Cal B 表。", Type:=8)

我似乎无法使用零字符串长度字符串测试来取消此应用程序。我需要能够关闭当前工作簿、显示用户窗体并退出子窗体。

这是我的代码:(只要您选择某些内容并且不取消或关闭,该代码就会起作用)

Sub popCheckVals()
Dim ranC As Range, calBC(1 To 39) As Variant, i As Integer, j As Integer, k As Integer, l As Integer
dozerCal.Hide

Set ranC = Application.InputBox("Select the Cal B table.", Type:=8)

l = 1
For j = 1 To 13
    For i = 1 To 3
        calBC(l) = ranC(j, i)
        l = l + 1
    Next
Next
 mltn = calBC(1)
 mlte = calBC(2)
 mltelev = calBC(3)
 rltn = calBC(4)
 rlte = calBC(5)
 rltelev = calBC(6)
 mrtn = calBC(10)
 mrte = calBC(11)
 mrtelev = calBC(12)
 rrtn = calBC(13)
 rrte = calBC(14)
 rrtelev = calBC(15)
 smltn = calBC(22)
 smlte = calBC(23)
 smltelev = calBC(24)
 srltn = calBC(25)
 srlte = calBC(26)
 srltelev = calBC(27)
 smrtn = calBC(31)
 smrte = calBC(32)
 smrtelev = calBC(33)
 srrtn = calBC(34)
 srrte = calBC(35)
 srrtelev = calBC(36)

    ActiveWorkbook.Close
    dozerCal.Show
End If
End Sub

最佳答案

当用户点击Cancel按钮时,InputBox返回False,它不是Range对象,不能赋值给ranC。处理此问题的一种方法是将这部分代码包装在错误处理程序中:

    On Error Resume Next
    Set ranC = Application.InputBox("Select the Cal B table.", Type:=8)
    If Err.Number = 424 Then
        ' Handle cancel button
        Debug.Print "User cancelled"
        Exit Sub
    ElseIf Err.Number <> 0 Then
        ' Handle unexpected error
        Debug.Print "Unexpected error"
    Else
        ' Your code here
    End If
    On Error GoTo 0    ' This line could go in the else block

关于vba - 无法正确取消Application.Inputbox,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32634800/

相关文章:

excel - 在 Excel 2010 中使用 VBA 隐藏列

Excel 2003 VBA - 复制此选择和着色行的代码的方法

installation - 由于文件 libmpi.so.1 丢失而出错

c++ - "memory corruption"当遵循物理教程 : how to fix? 时

vba - 在 Excel 中列出文件夹和子文件夹中的所有文件

vba - 关闭 Word 时禁用保存提示

regex - 如何在word中使用VBA(宏)使用/启用(RegExp对象)正则表达式

PHP - 从不同的文件格式 Word/Excel/Powerpoint/PDF/RTF 中提取文本

excel - XLSB 个人宏文件变量错误

java - 如果我从另一个类获得 AsyncTask 类的结果,则不会显示 ProgressDialog