Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/28.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Excel 应用程序定义或对象定义的错误IF语句_Excel_Vba - Fatal编程技术网

Excel 应用程序定义或对象定义的错误IF语句

Excel 应用程序定义或对象定义的错误IF语句,excel,vba,Excel,Vba,我收到运行时错误“1004”应用程序定义错误或对象定义错误。 它被卡在这个If语句上了 If Cells(rownumber2, 2).Value <> 1 Then 如果单元格(行数2,2)。则值为1 任何帮助都将被占用 Sub stock() Application.ScreenUpdating = False Dim rownumber As Long Dim rownumber2 As Double Dim rng As Range, i As Range, j As R

我收到运行时错误“1004”应用程序定义错误或对象定义错误。 它被卡在这个If语句上了

If Cells(rownumber2, 2).Value <> 1 Then
如果单元格(行数2,2)。则值为1
任何帮助都将被占用

Sub stock()
Application.ScreenUpdating = False
Dim rownumber As Long
Dim rownumber2 As Double
Dim rng As Range, i As Range, j As Range, rng2 As Range
rownumber = 0 'Machining 900#
rownumber2 = 1 'maximo 900#
Set rng = Range("j1:j1910")
Set rng2 = Range("A2:A62685")
For Each i In rng
    rownumber = rownumber + 1
    For Each j In rng2
    rownumber2 = rownumber2 + 1
    If i = j Then
        If Cells(rownumber2, 2).Value <> 1 Then
        'If (IsNumber(Search("*Active*", Cells(rownumber2, 2)))) Then
            Cells(rownumber, 10).Interior.ColorIndex = 5
        Exit For
        End If
        Exit For
    End If
 Next
Next
Application.ScreenUpdating = True
End Sub
子库存()
Application.ScreenUpdating=False
暗行数等于长行数
将第2行暗显为双精度
变暗rng作为范围,i作为范围,j作为范围,rng2作为范围
行数=0'加工900#
行数2=1'最大值900#
设置rng=范围(“j1:j1910”)
设置rng2=范围(“A2:A62685”)
对于rng中的每个i
rownumber=rownumber+1
对于rng2中的每个j
rownumber2=rownumber2+1
如果i=j,那么
如果单元格(第2行,第2行)。值为1,则
'如果(IsNumber(搜索(“*Active*”,单元格(rownumber2,2))),则
单元格(行数,10)。Interior.ColorIndex=5
退出
如果结束
退出
如果结束
下一个
下一个
Application.ScreenUpdating=True
端接头

rowNumber2失败时的值是多少


您永远不会重置其值,因此最终它将超过图纸中的行数。也许你的意思是每次通过“j”循环将其重置为2…

因此我无法找出代码不起作用的原因,因此我通过将代码更改为此解决了问题

Sub stock()
Application.ScreenUpdating = False
Dim rownumber As Long
Dim rng As Range, i As Range, j As Range, rng2 As Range
rownumber = 0 'Machining 900#
Set rng = Range("j1:j1921")
Set rng2 = Range("A2:A62685")
For Each i In rng
    rownumber = rownumber + 1
    For Each j In rng2
        If i = j Then
            If j.Offset(0, 1) <> "Active" Then
                Cells(rownumber, 10).Interior.ColorIndex = 3
                a = j.Offset(0, 1).Value
                i.Offset(0, 1).Value = a
            Exit For
            End If
            Exit For
        End If
     Next
Next
Application.ScreenUpdating = True
End Sub
子库存()
Application.ScreenUpdating=False
暗行数等于长行数
变暗rng作为范围,i作为范围,j作为范围,rng2作为范围
行数=0'加工900#
设置rng=范围(“j1:j1921”)
设置rng2=范围(“A2:A62685”)
对于rng中的每个i
rownumber=rownumber+1
对于rng2中的每个j
如果i=j,那么
如果j偏移量(0,1)“激活”,则
单元格(行数,10)。Interior.ColorIndex=3
a=j.偏移量(0,1).值
i、 偏移量(0,1)。值=a
退出
如果结束
退出
如果结束
下一个
下一个
Application.ScreenUpdating=True
端接头

为什么
行数2
是双精度的?不能是整数吗?所以你的代码对我有用。工作簿是否受到保护?回过头来看,如果变量离开for循环,则无法清除该变量,这肯定是一个问题