• ベストアンサー

VBA Select Caseについて

エクセル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

質問者が選んだベストアンサー

  • ベストアンサー
  • merlionXX
  • ベストアンサー率48% (1930/4007)
回答No.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

その他の回答 (2)

  • KenKen_SP
  • ベストアンサー率62% (785/1258)
回答No.2

こんばんは。 [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

  • 0shiete
  • ベストアンサー率30% (148/492)
回答No.1

ヘルプファイルの比較演算子の項目に 「・・・等価演算子 Is と文字列比較演算子 Like も比較演算子に含まれます。ただし、Select Case ステートメントの中では、Is と Like を比較演算子として使うことはできません。」 とあります。 If ... Then... Elseに切り替えたほうがよいかと思います。