由快捷方式触发时,数据导入操作将停止,但可以在调试模式下工作

时间:2019-06-05 08:28:37

标签: excel vba

我对宏有问题,在运行时宏会在打开源文件时停止(在第一张纸上-从第二张纸应该复制3个数据范围)。在调试模式下运行时,它可以逐步正常运行。 我是VBA的新手,无法在代码中找到错误。谢谢您的帮助!

我在检查时遇到问题,“摘要”表已经存在,但是我使用函数解决了此问题,目前可以使用。

更新:打开源文件(必须从中复制数据)后,宏会通过快捷方式触发,但它应该打开文件,复制范围,然后将其粘贴到目标表中。如果从宏触发的弹出窗口中选择了源文件,它将打开并且宏停止,而不会复制和粘贴。

If Not sheet_exists("Summary") Then
ThisWorkbook.Sheets.Add( _
After:=ThisWorkbook.Sheets(ThisWorkbook.Sheets.Count)).Name = _
"Summary"
End If

    Filename = Application.GetOpenFilename(FileFilter:="Excel Files (*.xls*), *.xls*", Title:="Select an Inbound Report File")

Set SrcWbk = Workbooks.Open(Filename)
Worksheets("Summary").Activate
SrcWbk.Sheets("Summary").Range("A:W").Copy DestWbk.Sheets("Summary").Range("A:W")
SrcWbk.Close False

    DestWbk.Sheets("Summary").Range("A9:F9", Range("A9:F9").End(xlDown)).Copy
    Sheets("Current Receipt On Stock").Select
    Range("E2").Select
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False

Sheets("Summary").Select

    DestWbk.Sheets("Summary").Range("G9:H9", Range("G9:H9").End(xlDown)).Copy
    Sheets("Current Receipt On Stock").Select
    Range("L2").Select
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False

Sheets("Summary").Select

    DestWbk.Sheets("Summary").Range("I9:W9", Range("I9:W9").End(xlDown)).Copy
    Sheets("Current Receipt On Stock").Select
    Range("P2").Select
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False

Application.DisplayAlerts = False
Sheets("Summary").Delete
Application.DisplayAlerts = True
Sheets("Current Receipt On Stock").Range("E2").Select

2 个答案:

答案 0 :(得分:0)

当您逐步运行它时,它可以工作,但在正常运行时却不行?太奇怪了!

我建议您删除所有Select,这是错误的根源!因为可能是您一步一步运行时选择了“手动”工作表,所以代码运行方式不同。

喜欢这个:

Sheets("Current Receipt On Stock").Range("E2").PasteSpecial Paste:=xlPasteValues, _
        Operation:=xlNone, SkipBlanks :=False, Transpose:=False

答案 1 :(得分:0)

更新:我不是通过快捷方式而是在触发器和宏起作用时创建了按钮,而是仅在由快捷方式触发时才出现问题。

感谢您提出有关删除所有Select的建议,但是主要问题仍然存在。

  

当您逐步运行它时,它可以工作,但在正常运行时却不行?   太奇怪了!

是的,很奇怪。我在VBA中不是菜鸟,请尝试理解代码,但是在本部分的宏打开工作簿中它会停止:

    Filename = Application.GetOpenFilename(FileFilter:="Excel Files (*.xls*), *.xls*", Title:="Select a Douglas Inbound Report File")

Set SrcWbk = Workbooks.Open(Filename)

它不会开始将数据从“摘要” 工作表复制到目标工作簿(正在运行宏)中的相同命名工作表:

Worksheets("Summary").Activate
SrcWbk.Sheets("Summary").Range("A:W").Copy DestWbk.Sheets("Summary").Range("A:W")
SrcWbk.Close False