excel - 取消按钮应该退出子菜单

标签 excel vba

我有一个对话框可以选择文件夹名称并显示用户选择的文件夹的名称。

如果用户选择取消而不是文件夹路径并选择“确定”,则会引发错误。

我使用了状态变量,并注意到取消后状态更改为 -1。因此,我尝试使用 if 条件退出子程序来实现注释部分中的代码。

当代码中存在注释部分时,这在选择文件夹的情况下不起作用。

没有它,它就可以选择文件夹。

sub abc()
    Set diaFolder = Application.FileDialog(msoFileDialogFolderPicker)
        diaFolder.AllowMultiSelect = False
        diaFolder.Title = "Select a folder then hit OK"
        diaFolder.Show
        'Status = diaFolder.Show
        'If Status < 0 Then
        'Exit Sub
        'End If
        a = diaFolder.SelectedItems(1)

        MsgBox ("Folder selected is :" & a)
ens sub

最佳答案

请记住 vbFalse = 0 且 vbTrue = -1。 换句话说,单击“确定”将返回 -1,单击“取消”将返回 0。

尝试以下代码:

Sub abc()
    With Application.FileDialog(msoFileDialogFolderPicker)
        .AllowMultiSelect = False
        .Title = "Select a folder then hit OK"
        If .Show = -1 Then
            MsgBox ("Folder selected is :" & .SelectedItems(1))
        Else
            Exit Sub
        End If
    End With
End Sub

关于excel - 取消按钮应该退出子菜单,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27077614/

相关文章:

excel - excel中的多轴折线图

javascript - 先进的 xlsx 电子表格格式

VBA 如何获取当前用户应用程序数据文件夹的路径?

excel - 在没有 VBA 的 Excel 中组合动态数组

c# - 从 Excel 工作表中读取日期时间值

excel - 根据旁边的单元格中的文本复制并粘贴数据

vba - 我的 VBA 任务的最佳循环

excel - 是否可以使用 VBA 将宏从一个 Excel 工作簿复制到另一个工作簿?

excel - 根据列数将现有值粘贴到相应行中一定次数

excel - 有没有更聪明的方法来解决几个列