我得到"运行时错误' 424:需要对象"错误

时间:2016-10-24 15:23:54

标签: excel vba excel-vba

我制作了一个有多个潜艇的宏。在其中一个潜艇中我得到了给出错误。在此子代码之前,代码运行正常但在此子代码中,当活动工作表切换到工作表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

请注意,当我运行它时,给定代码正常工作,为宏创建一个按钮。我在Personal XLSB文件中运行时收到错误。

1 个答案:

答案 0 :(得分:3)

需要大量的清理工作:

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