Что ж, вот урок понимания типа для переменных. .Вы получаете несоответствие типов ошибка, потому что для некоторых диапазонов типы не могут быть сопоставлены.Я даю модифицированную версию вашего кода, чтобы лучше понять концепцию Type и решить проблему.
Например,Строка не может быть сопоставлена с числом.Ошибка не может быть сравнена ни строкой, ни числом.
В приведенном ниже решении мы сначала сравним тип, используя VarType, и после того, как их тип совпадет успешно, мы выполним сопоставление второго уровня.
Option Explicit
Sub Compare_Tracker()
Dim varSheetA As Variant, varSheetB as Variant
Dim strRangeToCheck As String
Dim iRow As Long
Dim iCol As Long
strRangeToCheck = "A12:K150"
varSheetA = Worksheets("Main").Range(strRangeToCheck)
varSheetB = Worksheets("Discrepancy Compare").Range(strRangeToCheck) ' or whatever your other sheet is.
For iRow = LBound(varSheetA, 1) To UBound(varSheetA, 1)
For iCol = LBound(varSheetA, 2) To UBound(varSheetA, 2)
If VarType(varSheetA(iRow, iCol)) = VarType(varSheetB(iRow, iCol)) Then
If varSheetA(iRow, iCol) <> varSheetB(iRow, iCol) Then
' Cells are different.
' Highlight different cells light yellow.
Worksheets("Discrepancy Compare").Cells(iRow + 11, iCol).Interior.ColorIndex = 36
End If
Else
' Cells Type are different.
' Highlight different cells light red.
Worksheets("Discrepancy Compare").Cells(iRow + 11, iCol).Interior.ColorIndex = 38
End If
Next iCol
Next iRow
End Sub