运行时“ 1004”:尽管代码仍然有效,但应用定义错误或对象定义错误

时间:2019-01-05 04:20:19

标签: excel vba

我编写了一个代码,以根据其相邻单元格的值在单元格中应用条件格式-例如,基于A1的格式A2。但是,完成代码运行后,即使我的代码仍然可以运行,我仍然遇到运行时1004错误。

错误:运行时'1004':应用程序定义或对象定义的错误

Sub CodForAr()
 Dim iSet As IconSetCondition

 NumOfRows = Range("SKUs").Rows.Count + 1
 With Range("SKUs")
 For i = 1 To NumOfRows
     Set iSet = .Cells(i, 2).FormatConditions.AddIconSetCondition
     With iSet
         .IconSet = IconSets(xl3Arrows)
         .ReverseOrder = False
         .ShowIconOnly = False
     End With
     With iSet.IconCriteria(2)
         .Type = xlConditionValueNumber
         .Operator = xlGreaterEqual
         .Value = Range("SKUs").Cells(i, 1).Value
     End With
     With iSet.IconCriteria(3)
         .Type = xlConditionValueNumber
         .Operator = xlGreaterEqual
         .Value = Range("SKUs").Cells(i, 1).Value
     End With
 Next i
 End With
End Sub

我只是想知道是什么导致了错误,即使代码仍然给了我想要的结果呢?

实际上,我发现了麻烦的部分,它位于这一行代码中

NumOfRows = Range("SKUs").Rows.Count + 1

基本上将我的范围长度扩展到了另一个值无效的单元格,这导致了错误。但是我遇到的另一个问题是 Error cell

无论哪种原因,该代码都能正常运行,直到黄色突出显示的单元格为止。任何人都有假设吗?

先谢谢了。

1 个答案:

答案 0 :(得分:0)

除非xl3Arrows是默认的 IconSet ,否则我不确定该如何正确执行您要执行的条件格式设置操作。

简而言之,IconSet是单数,而不是复数。

 With iSet
     .IconSet = IconSet(xl3Arrows)
     .ReverseOrder = False
     .ShowIconOnly = False
 End With

我建议您通过切换VBE的“工具”,“选项”,“编辑器”,“需要变量声明”来开始使用Option Explicit,并停止使用On Error Resume Next作为权宜之计,以绕过明显的(且易于修复的)编码错误。

在过去的37分钟里,可能已经花了很多时间将一些基本的调试方法投入实际使用。