- ベストアンサー
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
- みんなの回答 (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)
こんばんは。 [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)
ヘルプファイルの比較演算子の項目に 「・・・等価演算子 Is と文字列比較演算子 Like も比較演算子に含まれます。ただし、Select Case ステートメントの中では、Is と Like を比較演算子として使うことはできません。」 とあります。 If ... Then... Elseに切り替えたほうがよいかと思います。