2016-10-10 139 views
0

基本上,我的代碼工作方式是將來自Outlook的傳入電子郵件主題與Excel中的列表列進行比較 - 可能是現有電子郵件。如果傳入電子郵件與任何記錄匹配,則它在Excel中顯示值。但是,我注意到,如果Excel中的數據包含標籤(#)值,即使傳入的電子郵件與Excel中的電子郵件不相同,代碼也會將其標記爲匹配。VBA Like函數

If emlSubj Like "*" & strSubj & "*" Then 
Debug.Print strSubj 

代碼有問題嗎?還是LIKE函數的限制?

+1

用'Like',「*」代表每一個字符序列,從而使「#」將匹配 – user3598756

+0

@Wilson請編輯您的帖子,並添加您的代碼的其餘部分(相關部分) –

+1

''#是通配符也是如此。 http://analystcave.com/vba-like-operator/ – Marco

回答

5

改爲使用InStr函數。它返回一個整數,指定一個字符串中第一次出現的起始位置。

If InStr(emlSubj , strSubj) > 0 Then 
    Debug.Print strSubj 
End If 
+0

所以我嘗試使用上面的代碼,但它無法匹配我正在比較的2個主題。例如,EmlSubj是Holiday Booking,而StrSubj(Excel文件中的一個)是Holiday Booking#445。代碼無法匹配這兩個主題。 – Wilson

+0

如果InStr(「假期預訂#445」,「假期預訂」)> 0然後 Debug.Print「FOUND」 End If –

+0

您需要指定一個字符串,您首先嚐試搜索子字符串。然後你聲明一個搜索詞。 –