我得到“运行时错误”424:对象需要“错误

我已经做了一个有多个潜艇的macros。 在其中一个潜艇我得到的错误。 在这之前,代码运行良好,但在这个子活动表切换到工作表2,我得到错误在指定的行。

Sub Matchr() counter = 0 Dim k As Integer Sheets("Sheet2").Select k = Sheet2.UsedRange.Rows.Count + 5 '<-- This line is throwing the error. Set S1 = Worksheets("Sheet1") Set S2 = Worksheets("Sheet2") For i = 7 To S2.UsedRange.Rows.Count For J = 7 To S1.UsedRange.Rows.Count If Sheet2.Cells(i, "J") = Sheet1.Cells(J, "J") Then counter = 1 End If Next J If counter = 0 Then Sheet2.Cells(k, "I") = Sheet2.Cells(i, "I") Sheet2.Cells(k, "J") = Sheet2.Cells(i, "J") Sheet2.Cells(k, "K") = Sheet2.Cells(i, "K") k = k + 1 End If counter = 0 Next i Range("I45:I58").Select Selection.NumberFormat = "[$-409]d-mmm-yy;@" Range("J63").Select End Sub 

请注意,给定的代码工作正常,当我运行它为macros的button。 我在个人XLSB文件中运行时出现错误。

很多清理需要:

 Sub Matchr() Dim k As Integer, S1 as Worksheet, S2 as Worksheet Set S1 = Worksheets("Sheet1") Set S2 = Worksheets("Sheet2") k = S2.UsedRange.Rows.Count + 5 For i = 7 To S2.UsedRange.Rows.Count For J = 7 To S1.UsedRange.Rows.Count If S2.Cells(i, "J") = S1.Cells(J, "J") Then 'Do Nothing Else S2.Cells(k, "I").Resize(1, 3) = S2.Cells(i, "I").Resize(1, 3) k = k + 1 End If Next J Next i Range("I45:I58").NumberFormat = "[$-409]d-mmm-yy;@" 'This range needs a S1. or S2. before it to define the correct Sheet! End Sub