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