可以使用通配符。請記住以下兩點:首先,字符串比較表達式評估爲布爾型數據類型(True/False);其次,根據Select ... Case語句的開發人員參考,任何個案表達式必須「隱式轉換」爲與選擇個案測試表達式相同的數據類型。爲了演示,我們使用上面原始帖子中的代碼。
Select Case ActiveCell.Value '-->ActiveCell.Value is the test expression
Case ActiveCell.Value Like "*string*" '-->(ActiveCell.Value Like "*string*") is the Case expression.
ActiveCell.Value = "contains string"
End Select
如果我們選擇在任何工作表包含字符串值的單元格,則使用的即時窗口來測試使用類型名()函數這兩個表達式的數據類型,我們就得到以下:
?TypeName(ActiveCell.Value)
String
?TypeName(ActiveCell.Value Like "*string*")
Boolean
如您所見,Select ... Case在這裏不起作用,因爲數據類型不是隱式地相同的(如果宏在工作表中包含單個單元格的任何單元格上運行, - 「True」或「False」的字值,Excel自動轉換爲布爾值)。
該解決方案實際上是一個非常簡單的解決方案。只需將測試表達式更改爲True。
Select Case True
Case (ActiveCell.Value Like "*string*")
ActiveCell.Value = "contains string"
End Select
這是基本相同的寫作:
If (ActiveCell.Value Like "*string*") = True Then ActiveCell.Value = "contains string"
這主要是個人喜好的問題您是否使用如果...那麼或SELECT ...案例。由於代碼的可讀性,我個人喜歡Select ... Case結構,但也有其他好處(比如能夠將每個Case傳遞一個用逗號分隔的表達式列表,而不是使用OR運算符,從而使代碼更加簡潔)。
我不認爲你在Select Case塊中使用通配符語句測試。嘗試使用'If ... then ... elseif ... end if'而不是 –
用'Case Is Like'代替'Case ActiveCell.Value Like' – SeanC