2017-06-15 156 views
0

我想比較的範圍在Excel中使用下列VBA代碼:比較兩個範圍VBA

Sub CompareTwoRanges() 
Dim wb As Workbook 
Dim ws1 As Worksheet 
Dim ws2 As Worksheet 
Dim rng1 As Range 
Dim rng2 As Range 

Set wb = ThisWorkbook 
Set ws1 = wb.Sheets("Sheet1") 
Set ws2 = wb.Sheets("Sheet2") 
Set rng1 = ws1.Range("A14:C14") 
Set rng2 = ws2.Range("N3:P3") 

If rangesAreEqual(rng1, rng2, ws1, ws2) Then 
MsgBox "The ranges are equal." 
Else 
MsgBox "Sorry. The ranges are NOT equal." 
End If 
End Sub 

Function rangesAreEqual(rng1 As Range, rng2 As Range, _ 
ws1 As Worksheet, ws2 As Worksheet) As Boolean 
' booleans default to false 
' verify ranges have same dimensions 
If rng1.Columns.Count <> rng2.Columns.Count Then Exit Function 
If rng1.Rows.Count <> rng2.Rows.Count Then Exit Function 

' ranges are the same size. are their contents equal? 
rangesAreEqual = ws1.Evaluate("=AND(EXACT(" & ws1.Name & "!" & _ 
rng1.Address & "," & ws2.Name & "!" & rng2.Address & "))") 
End Function 

但是我得到的錯誤類型不匹配。

任何人有問題是什麼想法呢?

我從另一個崗位(Compare Two Ranges)這個代碼,但是我不能發表評論我要請問誰發佈的代碼,爲什麼我可能會得到這個問題的人。

+0

你會在哪一行發生錯誤? –

+0

這已被回答:https://stackoverflow.com/questions/22270693/fastest-way-to-check-if-two-ranges-are-equal-in-excel-vba – Jsleshem

+0

我得到第10行的錯誤 – bmartin598

回答

1

這已經回答了:Fastest way to check if two ranges are equal in excel vba

注意,該鏈接的問題也被標記爲重複。轉到原始帖子查看完整答案。如果應該幫助你,並回答一切。

話雖這麼說,可使用此表:https://msdn.microsoft.com/en-us/library/office/ff838238.aspx看到的一切,該範圍對象可以在VBA做。

+0

這兩種方法都不能解決類型不匹配問題,儘管原始代碼更加簡潔。類型不匹配的問題在於OP最有可能在一個或多個單元格中出現錯誤。我們不能將錯誤等同起來。 –