首页 > 解决方案 > 数据导入操作在被快捷方式触发时停止,但在调试模式下工作

问题描述

我对宏有问题,在打开源文件时运行它会停止(在第一张纸上 - 从第二张纸上应该复制 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

标签: excelvba

解决方案


当您逐步运行它时,它可以工作,但是当您正常运行时却不行?有点奇怪 !

我建议您全部删除Select,这是错误的来源!因为可能是当您逐步运行时,您“手动”选择了一张工作表,这就是您的代码运行方式不同的原因。

像这样 :

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

推荐阅读