我在Excel中遇到一个VBA脚本的奇怪问题 . 基本上它会对工作表执行大量操作,但也应该打开,读取数据并关闭另一个excel工作簿并继续主工作表中的操作 . VBA脚本存储在PERSONAL.XLSB文件中,以便能够在任何地方使用 . 下面是VBA脚本的激活方式以及发生的情况 .

1 - 贯穿"DEVELOPER" - > "MACROES" . 这就像我想要的那样,对VBA脚本有所了解 .
2 - 运行我为此特定VBA脚本设置的快捷键(在我的情况下为CTRL SHIFT P),同时激活特定的Excel工作表 . 这产生了不同的结果,即大多数操作都没有执行,只有额外的excel工作簿被打开并保持打开状态 . 主Excel文件显然是不受影响的 .

我列出了下面的一些代码 . 声明选项显式 . 任何想法为什么会发生这种情况?不明白为什么它应该是可能的 . 添加调试代码后,似乎在“Workbooks.Open”之后没有执行任何操作O:\ DO-DK-Data \ Projects \ Cisco \ EstimatesPromotions.xlsx“”

DisablePromotions = False
If DisablePromotions = False Then
    If IsFileOpen("O:\DO-DK-Data\Projects\Cisco\EstimatesPromotions.xlsx") = False Then
        Workbooks.Open "O:\DO-DK-Data\Projects\Cisco\EstimatesPromotions.xlsx"
        Debug.Print "Active Workbook: " & ActiveWorkbook.Name
        Workbooks("EstimatesPromotions.xlsx").Activate
        PromotionFileName = ActiveWorkbook.Name
        Debug.Print "Promotion Filename: " & PromotionFileName
        With Range("A1")
            If Range("A2") <> "" Then
                EstimatesRows = Range(.Offset(1, 0), .Offset(1, 0).End(xlDown)).Rows.Count
                ArraySize = 0
                For ArrayOffset = 1 To EstimatesRows
                    If DateDiff("d", Now, .Offset(ArrayOffset, 3)) >= 1 Then
                        ArraySize = ArraySize + 1
                        ReDim Preserve SKU(ArraySize)
                        ReDim Preserve Discount(ArraySize)
                        ReDim Preserve Expiration(ArraySize)
                        ReDim Preserve DART(ArraySize)
                        SKU(ArraySize) = .Offset(ArrayOffset, 1)
                        Discount(ArraySize) = .Offset(ArrayOffset, 2)
                        Expiration(ArraySize) = .Offset(ArrayOffset, 3)
                        DART(ArraySize) = .Offset(ArrayOffset, 4)
                    End If
                Next
                Promotions = True
            End If
        End With
        Application.DisplayAlerts = False
        Workbooks(PromotionFileName).Close SaveChanges:=False
        Application.DisplayAlerts = True
    End If
End If

谢谢,迈克尔