2014-03-19 141 views
0

任何人都可以解釋爲什麼有類型不匹配如果範圍...運行?
這裏是我的代碼類型不匹配錯誤,爲什麼?

Sub Button2_Click() 
Dim i As Integer 
Dim k As Integer 
For i = 2 To 1000 
For x = 3 To 999 
If Range("k" & i & ":bn" & i).Value = Range("k" & x & ":bn" & x).Value And Cells(i, 5).Value <> Cells(x, 5).Value Then 
Range("k" & i & ":bn" & i).Interior.ColorIndex = 7 
Range("k" & x & ":bn" & x).Interior.ColorIndex = 7 
End If 
Next x 
Next i 

End Sub 

我試圖用Cstr(),但什麼都沒有改變

UP:我試圖用一個多循環和細胞的替代範圍,只有我拿到的是應用程序定義或對象定義的錯誤是:

Dim z As Integer 
... 
For z = 6 To 30 
If Cells(i, z).Value = Cells(x, z).Value And Cells(i, 5).Value <> Cells(x, 5).Value Then 

TNX提前

+3

你不能像這樣比較整個範圍:'Range(「K2:BN2」)。Value = Range(「K3:BN3」)。Value。看到這個問題如何做到這一點:http://stackoverflow.com/questions/19395633/how-to-compare-two-entire-rows-in-a-sheet/19396257#19396257 –

+0

@simoco我可以使用單元格( ).value代替? – Seya

+0

您可以只比較_one_ cell與_another_ cell。但是你不能以這種方式比較_entire ranges_。如果您需要比較整個範圍 - 請參閱上面給出的鏈接 –

回答

2

的問題是,你是TR以比較相同「形狀」但多於一個單元格的兩個範圍。 Excel的VBA不允許this..something像:

Sub test1() 
    Dim r1 As Range, r2 As Range 
    Set r1 = Range("A1:A2") 
    Set r2 = Range("B1:B2") 
    If r1.Value = r2.Value Then 
     MsgBox "same" 
    End If 
End Sub 

將失敗.............你需要的元素逐元素的比較,如:

Sub test2() 
    Dim r1 As Range, r2 As Range 
    Set r1 = Range("A1:A2") 
    Set r2 = Range("B1:B2") 
    Dim i As Long, b As Boolean 
    b = True 
    For i = 1 To 2 
     If r2(i).Value <> r1(i).Value Then 
      b = False 
     End If 
    Next i 
    If b Then 
     MsgBox "same" 
    End If 
End Sub