Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/algorithm/10.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
Algorithm 运行时错误1004:excel vba中的应用程序定义或对象定义错误_Algorithm_Vba_Excel - Fatal编程技术网

Algorithm 运行时错误1004:excel vba中的应用程序定义或对象定义错误

Algorithm 运行时错误1004:excel vba中的应用程序定义或对象定义错误,algorithm,vba,excel,Algorithm,Vba,Excel,我是VBA新手,正在尝试运行宏来比较两列,并标记重复项和唯一值 下面是我试图运行的宏: Sub Mark_Duplicates() Dim Wks As Worksheet : Wks = Sheets("Sheet1") Dim i As Integer, j As Integer, k As Integer For i = 2 To 1000 j = Application.WorksheetFunction.CountIf(Range("C2

我是VBA新手,正在尝试运行宏来比较两列,并标记重复项和唯一值

下面是我试图运行的宏:

Sub Mark_Duplicates()

    Dim Wks As Worksheet : Wks = Sheets("Sheet1")

    Dim i As Integer, j As Integer, k As Integer

    For i = 2 To 1000

        j = Application.WorksheetFunction.CountIf(Range("C2:C1000"), Wks.Range("C" & i).Value)

        For k = 1 To j

            If (Wks.Range("C" & i).Value = Wks.Range("C" & i + 1).Value Or Wks.Range("C" & i).Value = Wks.Range("C" & i - 1).Value) And (Wks.Range("K" & i).Value = Wks.Range("K" & i + k).Value Or Wks.Range("K" & i).Value = Wks.Range("K" & i - k).Value) Then

                Wks.Range("C" & i).Interior.ColorIndex = 43

            Else

                Wks.Range("C" & i).Interior.ColorIndex = 37

            End If

        Next k

    Next i

End Sub
Sub Mark_Duplicates()

    Dim Wks As Worksheet : Wks = Sheets("Sheet1")

    Dim i As Integer, j As Integer, k As Integer

    i = 2

    k = 1

    'outer loop

    Do While i <= 1000

        j = Application.WorksheetFunction.CountIf(Range("C2:C1000"), Wks.Range("C" & i).Value)

        'inner loop

        Do While k <= j

            If (Wks.Range("C" & i).Value = Wks.Range("C" & i + 1).Value Or Wks.Range("C" & i).Value = Wks.Range("C" & i - 1).Value) And (Wks.Range("K" & i).Value = Wks.Range("K" & i + k).Value Or Wks.Range("K" & i).Value = Wks.Range("K" & i - k).Value) Then

                Wks.Range("C" & i).Interior.ColorIndex = 43

            Else

                Wks.Range("C" & i).Interior.ColorIndex = 37

            End If

            k = k + 1

        Loop

        i = i + 1

    Loop

End Sub
我得到运行时错误“1004”:每次运行宏时都会出现应用程序定义或对象定义的错误

出于同样的目的,我甚至尝试了以下代码:

Sub Mark_Duplicates()

    Dim Wks As Worksheet : Wks = Sheets("Sheet1")

    Dim i As Integer, j As Integer, k As Integer

    For i = 2 To 1000

        j = Application.WorksheetFunction.CountIf(Range("C2:C1000"), Wks.Range("C" & i).Value)

        For k = 1 To j

            If (Wks.Range("C" & i).Value = Wks.Range("C" & i + 1).Value Or Wks.Range("C" & i).Value = Wks.Range("C" & i - 1).Value) And (Wks.Range("K" & i).Value = Wks.Range("K" & i + k).Value Or Wks.Range("K" & i).Value = Wks.Range("K" & i - k).Value) Then

                Wks.Range("C" & i).Interior.ColorIndex = 43

            Else

                Wks.Range("C" & i).Interior.ColorIndex = 37

            End If

        Next k

    Next i

End Sub
Sub Mark_Duplicates()

    Dim Wks As Worksheet : Wks = Sheets("Sheet1")

    Dim i As Integer, j As Integer, k As Integer

    i = 2

    k = 1

    'outer loop

    Do While i <= 1000

        j = Application.WorksheetFunction.CountIf(Range("C2:C1000"), Wks.Range("C" & i).Value)

        'inner loop

        Do While k <= j

            If (Wks.Range("C" & i).Value = Wks.Range("C" & i + 1).Value Or Wks.Range("C" & i).Value = Wks.Range("C" & i - 1).Value) And (Wks.Range("K" & i).Value = Wks.Range("K" & i + k).Value Or Wks.Range("K" & i).Value = Wks.Range("K" & i - k).Value) Then

                Wks.Range("C" & i).Interior.ColorIndex = 43

            Else

                Wks.Range("C" & i).Interior.ColorIndex = 37

            End If

            k = k + 1

        Loop

        i = i + 1

    Loop

End Sub
Sub-Mark_-Duplicates()
按工作表标注工作:工作表=工作表(“工作表1”)
尺寸i为整数,j为整数,k为整数
i=2
k=1
“外环

请问错误发生在哪一行?a)为什么要声明除此之外的所有工作表父级
范围(“C2:C1000”)
?b) 在第一次迭代中,i是2,j将循环到2,并且K列中没有行号0。例如,
“K”&i-K
@Sean:它发生在两个codes@Jeeped.. 谢谢你的回复。这真的很有道理。i-k将给出值0,当然不存在第0行。如果我需要将“n-1”、“n-2”、“n-3”、“k”列中的“n-j”单元格与“n-1”、“n-2”、“n-3”、“n-j”单元格进行比较,请您建议我还可以使用什么