Running the macro for a thousand rows took about 12 minutes. Is there any way to improve the speed? Examples provided would be greatly appreciated.
part of the codes:
Public Sub Differences(ByVal startRow As Integer, endCol As Integer, pk1 As Integer, pk2 As Integer, pk3 As Integer, mCount As Integer)
Dim varS2, varS3
Dim counter As Integer, endrow As Integer, endrow2 As Integer
Dim rngS2 As Range, rngS3 As Range, c As Range, c2 As Range, c3 As Range
Dim iRow As Integer, i As Integer
'Retrieve Rows from Sheet2
Sheets(2).Activate
Set rngS2 = Sheets(2).Range(Cells(1, 1), Cells(1, endCol))
endrow = Sheets(2).Cells(Sheets(2).Rows.Count, "A").End(xlUp).Row
Set rngS2 = Range(rngS2.Rows(startRow), rngS2.Rows(endrow))
'Retrieve Rows from Sheet3
Sheets(3).Activate
Set rngS3 = Sheets(3).Range(Cells(1, 1), Cells(1, endCol))
endrow2 = Sheets(3).Cells(Sheets(3).Rows.Count, "A").End(xlUp).Row
Set rngS3 = Range(rngS3.Rows(startRow), rngS3.Rows(endrow2))
For Each c2 In rngS2
On Error GoTo 0
Let varS2 = Intersect(Sheets(2).UsedRange, c2.EntireRow)
For Each cc In rngS3
bCheck = False
cCheck = False
Let varS3 = Intersect(Sheets(3).UsedRange, cc.EntireRow)
For i = 2 To endCol
'Check if primary keys match
If varS2(1, pk1) = varS3(1, pk1) And varS2(1, pk2) = varS3(1, pk2) And varS2(1, pk3) = varS3(1, pk3) Then
'Check for differences
bCheck = True
If varS2(1, i) <> varS3(1, i) Then
cCheck = True
Exit For
Else
cCheck = False
End If
End If
Next i
Bookmarks