• ベストアンサー

select case文について

VB6.0のSelect Case文について質問です。 現在、ある文字列(mojiretu)の中から特定の文字を検索して その文字が文字列(mojiretu)の中に存在したらチェックボックスにチェックという一連の処理を行いたいのですがうまくいきません>< このSelect Case文のどこを直すべきでしょうか? select case mojiretu case instr(mojiretu,"abc") chk1.value=1 case instr(mojiretu,"def") chk2.value=1 case else chk3.value=1 end select

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

  • ベストアンサー
  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答No.1

こんにちは。 単に、以下のようにすればできると思います。 select case True case instr(mojiretu,"abc") chk1.value=1 case instr(mojiretu,"def") chk2.value=1 case else chk3.value=1 end select

その他の回答 (4)

  • O_cyan
  • ベストアンサー率59% (745/1260)
回答No.5

下記ではどうでしょうか。 dim a as long dim b as long a = instr(mojiretu,"abc") b = instr(mojiretu,"def") select case true case a >= 1 and b < 1 chk1.value=1 case a < 0 and b > 1 chk2.value=1 case else chk3.value=1 end select

noname#22222
noname#22222
回答No.4

Sinmple is Best! mojiretsu、Check1の綴りは変更して下さい! Private Sub Command1_Click()   Check1.Value = Abs(InStr(1, mojiretsu, "abc", vbTextCompare) > 0)   Check2.Value = Abs(InStr(1, mojiretsu, "def", vbTextCompare) > 0)   Check3.Value = Abs((Check1.Value + Check2.Value) = 0) End Sub

  • chie65536
  • ベストアンサー率41% (2512/6032)
回答No.3

select case文は、 select case <評価式> case <条件1> 文1 case <条件2> 文2 case else 文e end select の時、<評価式>と<条件n>が一致した時、文nが実行されます。 また、一致するcaseが複数あった場合は、最初の物だけが実行されます。 さらに、一致するcaseが無かった場合は、case elseの文が実行されます。 ですので、InStr関数を用いて「指定の文字が含まれるか?」をcase文に書く時は、ちょっと工夫が要ります。 Select Case True Case (InStr(mojiretu, "abc") <> 0) And (InStr(mojiretu, "def") <> 0) chk1.Value = True chk2.Value = True Case InStr(mojiretu, "abc") <> 0 chk1.Value = True Case InStr(mojiretu, "def") <> 0 chk2.Value = True Case Else chk3.Value = True End Select 上記のように<評価式>にTrueを指定し、case句の後の<条件式>にTrueかFalseになる式を書きます。 因みに、上記のままでは、条件が成り立たない時にチェックが消えない(一旦チェックが付くと消えない)ので、成り立たない時にチェックを消すなら、以下のようにします。 chk1.Value = InStr(mojiretu, "abc") <> 0 chk2.Value = InStr(mojiretu, "def") <> 0 chk3.Value = (InStr(mojiretu, "abc") = 0) And (InStr(mojiretu, "def") = 0)

  • hana-hana3
  • ベストアンサー率31% (4940/15541)
回答No.2

IF文を使いましょう。 if instr(mojiretu,"abc") > 0 then ~ select case mojiretu なら、mojiretu がある値を持たない分岐しません。 従って、case instr(mojiretu,"def") では無く、 case "def" としないと分岐の判断ができません。

関連するQ&A