我在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
谢谢,迈克尔