Excel 400运行顺序错误,当我单步执行时可以
我正在制作一个宏工作表,它可以对数据进行排序和复制。我已经设置了一个运行按钮,以按必要的顺序逐步执行宏。当我按顺序单独运行每个宏时,它工作得非常好,但当我尝试使用“运行”按钮自动运行时,它会弹出一个400错误。当它试图运行Excel 400运行顺序错误,当我单步执行时可以,excel,vba,Excel,Vba,我正在制作一个宏工作表,它可以对数据进行排序和复制。我已经设置了一个运行按钮,以按必要的顺序逐步执行宏。当我按顺序单独运行每个宏时,它工作得非常好,但当我尝试使用“运行”按钮自动运行时,它会弹出一个400错误。当它试图运行Sheet3.Copy2 这是我的跑步宏: Sub RUN() Call ButtonDel Call DataDel Call Sort1 Call Sort2 Call Sort6 Call Sheet3.PrintNum2
Sheet3.Copy2
这是我的跑步宏:
Sub RUN()
Call ButtonDel
Call DataDel
Call Sort1
Call Sort2
Call Sort6
Call Sheet3.PrintNum2
Call Sheet3.Copy2
Call Sheet4.PrintNum6
Call Sheet4.Copy6
End Sub
下面是正在崩溃的宏:
Sub Copy2()
Dim xRow As Long
Dim VInSertNum As Variant
xRow = 1
Application.ScreenUpdating = False
Do While (Cells(xRow, "A") <> "")
VInSertNum = Cells(xRow, "J")
If ((VInSertNum > 1) And IsNumeric(VInSertNum)) Then
Range(Cells(xRow, "A"), Cells(xRow, "J")).Copy
Range(Cells(xRow + 1, "A"), Cells(xRow + VInSertNum - 1, "J")).Select
Selection.Insert Shift:=xlDown
xRow = xRow + VInSertNum - 1
End If
xRow = xRow + 1
Loop
Application.ScreenUpdating = False
End Sub
子副本2()
长得一样
作为变异体的淡葡萄酒
xRow=1
Application.ScreenUpdating=False
Do While(单元格(X行,“A”)“”)
VInSertNum=细胞(X行,“J”)
如果((VInSertNum>1)且为数字(VInSertNum)),则
范围(单元格(X行,“A”)、单元格(X行,“J”)。复制
范围(单元格(xRow+1,“A”)、单元格(xRow+VInSertNum-1,“J”)。选择
选择。插入移位:=xlDown
xRow=xRow+VInSertNum-1
如果结束
xRow=xRow+1
环
Application.ScreenUpdating=False
端接头
我被难住了 看来您正在为多个工作表运行宏,而没有激活引发错误的工作表 VBA中的某些事件需要在运行前激活工作表 试着做
sheet3.在声明变量后立即激活,它就会工作
但是vba中的事件不是最好的方法,如果您只想从另一个范围中的某个范围获取值,请执行以下操作:
Range(Cells(xRow + 1, "A"), Cells(xRow + VInSertNum - 1, "J")).value = Range(Cells(xRow, "A"), Cells(xRow, "J")).value
在VBA编辑器中,在“xRow=1”行上放置一个断点,然后查看代码是否到达该行。如果有,请逐行检查代码。如果没有,那么你就陷入了“错误400”的黑暗世界:谷歌可能是你的朋友。另一方面,更好的做法是将屏幕更新的值存储在一个布尔变量中,然后在完成更新后使用该变量重置更新。我能够逐步执行,直到这行代码:范围(单元格(xRow+1,“a”)、单元格(xRow+VInSertNum-1,“J”)。选择Hmmm。缩小范围……更好的答案是“不选择”