Excel 调试文件对话框代码后的跳转行

Excel 调试文件对话框代码后的跳转行,excel,vba,Excel,Vba,这是一个已知的bug,还是一些特定于我的东西(我正在使用Excel365) 当我在文件对话框显示调用(选择文件夹或取消)后跳到代码的下一行(F8)时,它似乎关闭了单步执行,并将所有代码运行到下一个断点,如果没有代码,则继续运行 在下面的示例I单步代码中,它进入'fd.show',然后只要我选择一个文件夹/取消并单击ok,它就会运行代码 Option Explicit Public Sub Test() Dim fd As FileDialog Dim sFile As Stri

这是一个已知的bug,还是一些特定于我的东西(我正在使用Excel365)

当我在文件对话框显示调用(选择文件夹或取消)后跳到代码的下一行(F8)时,它似乎关闭了单步执行,并将所有代码运行到下一个断点,如果没有代码,则继续运行

在下面的示例I单步代码中,它进入'fd.show',然后只要我选择一个文件夹/取消并单击ok,它就会运行代码

Option Explicit

Public Sub Test()
    Dim fd As FileDialog
    Dim sFile As String
    Dim n As Integer

    n = 0
    sFile = "Work_" & Replace(Date, "/", "") & Replace(Time, ":", "") & ".csv"

    Set fd = Application.FileDialog(msoFileDialogFolderPicker)

    '*********** SINGLE STEP AFTER SHOW RUNS TO END *******************      
    If fd.Show = -1 Then
        Dim sDir As String
        sDir = fd.SelectedItems.Item(1)

        If Dir(sFile) = "" Then
            n = 1
        Else
            n = 2
        End If

    End If

    MsgBox CStr(n)
End Sub

有关调试时,F8键的解决方案停止工作的详细说明,请参见

基本上,您必须向注册表中添加一个新键(名称为禁用或CDebugging7)并将其值更改为1

  • 对于64位窗口上的32位Office,请转到注册表项:HKLM\SOFTWARE\Wow6432Node\Microsoft\VBA
  • 对于32位窗口上的32位Office,请转到注册表项:HKLM\SOFTWARE\Microsoft\VBA
  • 对于64位Windows上的64位Office,请转到注册表项:HKLM\SOFTWARE\Microsoft\VBA

如果fd.Show=-1,那么它(通常)会按照您描述的那样运行,
fd.Show=-1
。。。否则,它将进入循环内部。你选择了文件夹吗?不,我的意思是,无论发生什么情况,禁用单步,我都可以删除if语句,并且有十几行,但它仍然跳出单步模式。你使用32位Office版本吗?谢谢,我会看一看。我在谷歌上做了很多工作,看看这是否是一个已知的问题。