if文で複数指定

解決


  2005-04-01 19:38:59  No: 120610

if文で条件を指定するときに、if文1行に複数指定できないでしょうか?

AまたはBまたはCの時に処理を行う。

みたいな。


medaka  2005-04-01 20:02:11  No: 120611

A or B or C Then って事ですか?


  2005-04-01 20:15:12  No: 120612

その通りなのですが、『or』を使って処理をすると
変な動きをしました。

やりたいことはlogファイルを読み込み、
データを1行づつバッファして、そのバッファした
データの中に、条件に合うものがあれば処理を
行うようにしたいのですが、

Open strFILENAME For Input As #1
    
    Do While Not EOF(1)
      
      Line Input #1, strBUFF
      
          If InStr(strBUFF, " 260" Or " 261" Or " 999") Then
          n = n + 1
      End If
    Loop


  2005-04-01 20:15:13  No: 120613

その通りなのですが、『or』を使って処理をすると
変な動きをしました。

やりたいことはlogファイルを読み込み、
データを1行づつバッファして、そのバッファした
データの中に、条件に合うものがあれば処理を
行うようにしたいのですが、

Open strFILENAME For Input As #1
    
    Do While Not EOF(1)
      
      Line Input #1, strBUFF
      
          If InStr(strBUFF, " 260" Or " 261" Or " 999") Then
          n = n + 1
      End If
    Loop


外してるかな?  2005-04-01 20:41:42  No: 120614

If InStr(strBUFF, "260") Or InStr(strBUFF, "261") Or InStr(strBUFF, "999") Then
じゃないの?


LESIA  2005-04-01 20:50:39  No: 120615

Debug.Print " 260" Or " 261" Or " 999" とすると、" 999"になるので

If InStr(strBUFF, " 260" Or " 261" Or " 999") Then

If InStr(strBUFF, 、" 999") Then
と同じになります。


いな  2005-04-01 21:09:40  No: 120616

ヘルプを見れば一目瞭然だけど
InStr関数の引数は『1 つの文字列に評価される式』です。
ということで、
IF文で複数の条件式を入れる・・・。というのではなくこの場合
InStr関数の使い方が間違っています。


  2005-04-01 21:40:51  No: 120617

ありがとうございました。
勉強不足でした。


あんび  2005-04-06 00:33:24  No: 120618

もう、解決しちゃってるようですが
SELECT CASE を使った方がプログラム見やすくなりますよ。
(あくまで、みやすく・・・ね)


。。。  2005-04-06 04:06:55  No: 120619

VB6以前の場合、ムダな評価が行われるから、ネストしてやった方がパフォーマンスはいいだろう。
VB.NETならAndAlso、OrElseが使えるのが嬉しいな。


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加