【发布时间】:2019-01-03 16:42:18
【问题描述】:
我在下面创建了宏。它应该根据它找到一个特定的行,复制它,删除它并将其粘贴到同一工作簿中的单独工作表上。
它对我来说非常好,但对我的同事不适用。绿色代码工作并正确移动行,红色代码不起作用。它会找到行并删除它们,但不会将它们移动到另一张纸上。
实际代码:
With ActiveSheet
If .AutoFilterMode Then .AutoFilterMode = False
.Range("A1:Q1").AutoFilter 8, "*L5P*"
With .AutoFilter.Range.Offset(1)
.Copy Sheets("L5p Orders").Range("A" & Rows.Count).End(xlUp).Offset(1)
.EntireRow.Delete
End With
.AutoFilterMode = False
End With
With ActiveSheet
If .AutoFilterMode Then .AutoFilterMode = False
.Range("A1:Q1").AutoFilter 8, "*Powerstroke 6.0L*"
With .AutoFilter.Range.Offset(1)
.Copy Sheets("L5p Orders").Range("A" & Rows.Count).End(xlUp).Offset(1)
.EntireRow.Delete
End With
.AutoFilterMode = False
End With
With ActiveSheet
If .AutoFilterMode Then .AutoFilterMode = False
.Range("A1:Q1").AutoFilter 8, "*Powerstroke 7.3L*"
With .AutoFilter.Range.Offset(1)
.Copy Sheets("L5p Orders").Range("A" & Rows.Count).End(xlUp).Offset(1)
.EntireRow.Delete
End With
.AutoFilterMode = False
End With
With ActiveSheet
If .AutoFilterMode Then .AutoFilterMode = False
.Range("A1:Q1").AutoFilter 8, "*Nissan Titan*"
With .AutoFilter.Range.Offset(1)
.Copy Sheets("L5p Orders").Range("A" & Rows.Count).End(xlUp).Offset(1)
.EntireRow.Delete
End With
.AutoFilterMode = False
End With
此人与我拥有相同版本的 Excel,并且也像我一样运行 Windows 10。
想法?
【问题讨论】:
-
有错误吗?如果没有,您是否使用
On Error Resume Next?如果是这样,不要(永远!)排除故障的好方法是单步执行代码(使用 F8)在另一台机器上,逐行,密切关注任何变量。这应该有助于确定问题出在哪里。请参阅 Chip Pearson 的Debugging VBA 了解更多信息。 -
@ashleedawg 没有调试错误,代码完全一样。
-
如果我不得不在这里猜测,我建议在每次应用自动过滤器后弹出
DoEvents。在您尝试复制数据之前,失败的两个可能没有完成在您的同事机器上创建过滤器。如果你有更好的规格。机器那么他们可能是问题吗? -
明确声明
ActiveSheet将是什么,并将所有工作表引用绑定到正在使用的显式工作簿。