【发布时间】:2021-07-29 06:42:35
【问题描述】:
我编写了一个非常精细的代码,将 2 小时的工作自动化到不到 1 分钟。它可以在大多数日子里工作,就像今天这样的日子,代码不起作用,或者部分代码不起作用。 它是代码中最简单的部分不起作用。 这让我很沮丧。 要让代码正常工作,我要做的就是重新启动系统。
请理解,我根本不会更改代码。在错误发生之前或之后。
是发生错误的代码。
Range("Table1_2[[#Headers],[Bag No]:[Batch Making]]").Select
Range(Selection, Selection.End(xlDown)).Select
Selection.Copy
On Error Resume Next
Application.DisplayAlerts = False
Worksheets("Batch Making").Delete
Sheets.Add(After:=Sheets("Sheet1")).Name = "Batch Making"
Range("A1").Select
ActiveSheet.Paste
Cells.Select
Cells.EntireColumn.AutoFit
今天的错误是它不会粘贴代码选择的内容。 请注意:
- 它选择了行和列的集合
- 它创建了新工作表并选择了第一个单元格
- 它也尝试粘贴该值,但没有任何反应。
重启系统后,代码如梦似幻。
为什么会这样??有什么线索吗??
编辑:最大的问题是复制错误,正如我在某些日子里提到的,代码会崩溃,否则它会顺利运行。
每天都会向程序提供新数据,并对其进行清理以确保仅将程序可以获取的数据提供给它,这包括删除#N/A、#VALUE 和#Ref(今天也这样做了,崩溃后我仔细检查了数据)
但有时它会失败。
我将删除错误处理程序并使用单独的代码来检查工作表的可用性,以防错误再次弹出,然后我会在这里更新。
【问题讨论】:
-
1) 您将从阅读此How to avoid using Select 中受益。 2)“不工作”不是一个有用的描述,它怎么不工作?有错误吗?如果是这样,哪条线? 3) 强烈建议始终完全限定您的范围引用,以避免引用错误的工作簿/工作表。 4) 删除
On Error Resume Next除非你知道你在用它做什么,否则它会隐藏所有可能导致它不起作用的错误。 -
好吧,我们有一个复杂的宏,我们有一个宏标记为完成的步骤列表。这意味着我们可以看到它失败的地方 - 使错误检查更加容易......
-
@RaymondWu 嗨,感谢您的评论。代码将运行,它选择表格的一部分,创建一个新工作表,然后将所选组件粘贴到工作表的第一个单元格中,现在粘贴部分不起作用。错误部分是如果代码尝试删除工作表并且工作表不存在,那么它不应该失败
-
@Allwyn 在您使用
On Error Resume Next作为测试/预防崩溃的情况下,您应该在测试后立即设置On Error Goto 0,以便帮助您继续拾取错误。 (所以在您的情况下,您将在Worksheets("Batch Making").Delete之后添加该行)