プロが教える店舗&オフィスのセキュリティ対策術

エクセルVBAでLike演算子とSelectCase構文を組み合わせたいのですが、以下ではエラーになってしまいます。
どう修正すればいいのでしょうか?
ABCを含む文字列、DEFを含む文字列、その他、についての処理の分岐方法です。

Private Sub Worksheet_Change(ByVal Target As Range)
Select Case Target.Value
Case Like "*ABC*"
`処理A
Case Like "*DEF*"
`処理B
Case Else
`処理C
End Select
End Sub

A 回答 (3件)

無理にSelect Caseを使わなくとも、以下のような感じではいかが?



Private Sub Worksheet_Change(ByVal Target As Range)
x = Target.Value
If x Like "*ABC*" Then
MsgBox "A処理"
ElseIf x Like "*DEF*" Then
MsgBox "B処理"
ElseIf x Like "*GHI*" Then
MsgBox "B2処理"
Else
MsgBox "C処理"
End If
End Sub
    • good
    • 0

こんばんは。



[Select Case ヘルプ引用]
Like 演算子以外の比較演算子と共に使われます。

したがって Select Case ステートメントではなく、IF~End If で
判定してください。

または、こんな風にしてみたら?

' 注1)VB の文字列比較は大文字・小文字を区別します
' 注2)例えば Target.Value が「ABC111DEF」の場合は、ABC が含まれることが
'   判明した時点で Select Case を抜けてしまいます

Select Case True
  Case InStr(Target.Value, "ABC") > 0
    '処理A
  Case InStr(Target.Value, "DEF") > 0
    '処理B
  Case Else
    '処理C
End Select
    • good
    • 0

ヘルプファイルの比較演算子の項目に


「・・・等価演算子 Is と文字列比較演算子 Like も比較演算子に含まれます。ただし、Select Case ステートメントの中では、Is と Like を比較演算子として使うことはできません。」

とあります。
If ... Then... Elseに切り替えたほうがよいかと思います。
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!