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