2014-07-13 53 views
0

我想兩個單元格的值在兩個不同的工作簿(的.csv文件),持有特殊字符(■,□)比較特殊字符比較使用IF函數(VBA)

的代碼是比較使用參考單元的單元格內容,並讓用戶知道它們是否相同。

例如
CASE 1.□□□□□(FOUND)到■■■■■(REFERENCE) - >不同的值

CASE 2.■■■■■(FOUND)到■■ ■■■(REFERENCE) - >相同的值

我有一個FOR循環來運行條目和一個IF語句來執行比較。 IF函數假設檢查單元格是否相等

不幸的是,我的代碼一直在確定單元格不相等。

即CASE 2保持生產信息反饋「不同價」

我無法找到因此任何幫助,將不勝感激的問題。

謝謝!

[以下代碼]

Sub Value_Checker() 

Old_Data = Application.GetOpenFilename _ 
(Title:="Please choose old data to import", _ 
FileFilter:="CSV Files *.csv (*.csv), ") 

If Old_Data = False Then 
    MsgBox "No file specified.", vbExclamation, "Please pick old data" 
    Exit Sub 
Else 
    Set OldFile = Workbooks.Open(Old_Data) 
End If 

Rowlim = 100 

ThisWorkbook.Activate 

CHECK = Cells(4, 3).Value 

OldFile.Activate 'Activates old workbook 

For i = 1 To Rowlim 
    ActiveSheet.Cells(i, 4).Select 
    If Cells(i, 4) <> CHECK Then 
     MsgBox "Different Value" 
    Else 
     MsgBox "Same Value" 
    End If 
Next i 
End Sub 
+2

你是否100%確定這些單元格具有相同的文本?在您的示例中使用的「方形」字符通常用於不能用當前字體表示的字符,因此可能會出現多個(不同)字符*以在屏幕上顯示相同的表示形式。檢查每個字符的ASCII碼?因爲「a」不等於「a」,所以還要檢查前導/尾隨空格。 –

+0

通過將CHECK設置爲單元格(x,x)。值而不是單元格(x,x),您可能已經創建了一個難解的問題。 Cell對象沒有記錄Value屬性,因此它可能會引用Range對象中的屬性,而無法正確解析比較結果。我會嘗試先刪除Value屬性。 – BobRodes

+0

確保您的CHECK和測試單元格指向正確工作表上的正確單元格。另外,你爲什麼要激活和選擇任何東西? –

回答

0

我建議你嘗試strcomp()

StrComp(Cells(i, 4), CHECK, CompareMethod.Binary) 

一些更多的信息here