プロが教えるわが家の防犯対策術!

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

A 回答 (5件)

こんにちは。



単に、以下のようにすればできると思います。

select case True
case instr(mojiretu,"abc")
chk1.value=1
case instr(mojiretu,"def")
chk2.value=1
case else
chk3.value=1
end select
    • good
    • 0

下記ではどうでしょうか。


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
    • good
    • 0

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
    • good
    • 0

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)
    • good
    • 0

IF文を使いましょう。


if instr(mojiretu,"abc") > 0 then ~

select case mojiretu なら、mojiretu がある値を持たない分岐しません。

従って、case instr(mojiretu,"def") では無く、
case "def" としないと分岐の判断ができません。
    • good
    • 0

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