Excel 如何修复VBA错误消息运行时错误';1004';应用程序定义或对象定义错误
我有以下代码使一列根据其他两列的条目显示所需的状态 下面是代码 另外,有谁能向我解释一下,在2个代码Excel 如何修复VBA错误消息运行时错误';1004';应用程序定义或对象定义错误,excel,vba,Excel,Vba,我有以下代码使一列根据其他两列的条目显示所需的状态 下面是代码 另外,有谁能向我解释一下,在2个代码子比较2()和公共子单次更改(更改单元格作为范围)中重复这些条件有什么意义?这个代码是由我公司的一名实习生开发的。对我来说,使用第一个而不是第二个代码是有意义的 Excel不断突出显示公共子单元更改(更改单元格作为范围)以显示错误消息: 编译错误:循环不带Do,否则不带If 然后在那个错误之后,我在Set sales\u cell=changed\u cell.Offset(,-1)上得到了另一个
子比较2()
和公共子单次更改(更改单元格作为范围)中重复这些条件有什么意义?这个代码是由我公司的一名实习生开发的。对我来说,使用第一个而不是第二个代码是有意义的
Excel不断突出显示公共子单元更改(更改单元格作为范围)
以显示错误消息:
编译错误:循环不带Do,否则不带If
然后在那个错误之后,我在Set sales\u cell=changed\u cell.Offset(,-1)
上得到了另一个错误:
应用程序定义或对象定义错误
谢谢
Sub compare2()
Dim i As Long
Dim A As Long
Dim B As Long
Dim c As Long
A = 14
B = 15
c = 16
Do While A <= 42
i = 2
Do Until Len(Cells(i, A)) = 0
If Cells(i, A) = "Rollup" And Cells(i, B) = "Green" Then
Cells(i, c) = "Green"
ElseIf Cells(i, A) = "Rollup" And Cells(i, B) = "Yellow" Then
Cells(i, c) = "Yellow"
ElseIf Cells(i, A) = "Rollup" And Cells(i, B) = "Red" Then
Cells(i, c) = "Red"
ElseIf Cells(i, A) = "Rollup" And Cells(i, B) = "Overdue" Then
Cells(i, c) = "Overdue"
ElseIf Cells(i, A) = "Rollup" And Cells(i, B) = "Rollup" Then
Cells(i, c) = "Rollup"
Else
End If
i = i + 1
Loop
A = A + 4
B = A + 1
c = A + 2
Loop
End Sub
子比较2()
我想我会坚持多久
暗淡如长
暗B一样长
尺寸c与长度相同
A=14
B=15
c=16
当A不需要那么多时,如果
s:
If Cells(i, A) = "Rollup" then
Cells(i, c).value = Cells(i, B).value
End if
同样地:
If sales_cell = "Rollup" then
day_cell.value = production_cell.value
End if
选择案例
可能是更好的选择:
Select case sales_cell.value
Case "Rollup"
day_cell.value = production_cell.value
Case "Green"
if Production_cell.value = "Overdue" then Cells(i, c).value = Production_cell.value
End Select
如果正确,您将看到您缺少一个结束If
,或者最后一个结束If
应该是ElseIf
@ScottCraner嗨,您能告诉我在哪里放置结束If
谢谢!!!您在第二个代码上的最后一个If
应该是ElseIf
。感谢您的建议,但我相信不能这样使用它,因为有时我会遇到诸如Sales\u cell=Green,Production\u cell=Overside之类的情况,然后状态是Cells(I,c)将过期,在这些情况下,逐案处理Select case
可能是更好的选择。请参见编辑我的答案,
Select case sales_cell.value
Case "Rollup"
day_cell.value = production_cell.value
Case "Green"
if Production_cell.value = "Overdue" then Cells(i, c).value = Production_cell.value
End Select