2016-03-28 157 views
1

我一直在尋找過去的一個小時,因爲我似乎無法找到一個能夠超越我的用例的例子(儘管在我的腦海中超級簡單)。我有一個for循環搜索列中的所有單元格,如果單元格包含字符串打開,那麼它將數據添加到不同的單元格。我遇到的問題有時是單元格包含開放開放12/12/12等目前我的代碼我有以下。我無法弄清楚如何忽略區分大小寫,如果單元格包含此值,將其更改爲「仍然打開或關閉」。vba如果單元格包含任何格式的字符串

If Cells(X, C) = UCase("Closed") Then 
    Cells(X, Q).Value = "Closed" 
ElseIf Cells(X, C) = UCase("Open") Then 
    Cells(X, Q).Value = "Still open" 
End If 

如果單元格只包含「Closed」或「Open」,則此方法有效。盒子中的任何不同拼寫或附加文本都會導致失敗。有沒有簡單的方法來搜索單元格是否包含我正在搜索的任何格式的「StRiNG」?

+0

嘗試'instr' .... – findwindow

+2

'如果UCase(Cells(X,C).Value)like「* CLOSED *」Then' –

+1

是'Q'還是'C'列字母或數字變量?因爲我的猜測是他們是列,所以更改爲'如果單元格(X,「C」)...' –

回答

4

要完成模式匹配Select Case statement可能更合適。

Select Case True 
    Case LCase(Cells(x, c).Value2) Like "*closed*" 
     Cells(x, q) = "Closed" 
    Case LCase(Cells(x, c).Value2) Like "*open*" 
     Cells(x, q) = "Still Open" 
    Case Else 
     'something else 
End Select 

這將移除的情況下的靈敏度以及搜索關閉作爲整個單元格的內容的子字符串。

+0

明天早晨,如果蒂姆威廉斯沒有發佈他的(使用他的版本),我會繼續並接受這個答案,因爲你的確是一個可行的選擇。謝謝。 – bluerojo

相關問題