if文で複数指定

解決


 2005-04-01 10:38:59  No: 120610  IP: [192.*.*.*]

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

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

みたいな。

編集 削除
medaka  2005-04-01 11:02:11  No: 120611  IP: [192.*.*.*]

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

編集 削除
 2005-04-01 11:15:12  No: 120612  IP: [192.*.*.*]

その通りなのですが、『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 11:15:13  No: 120613  IP: [192.*.*.*]

その通りなのですが、『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 11:41:42  No: 120614  IP: [192.*.*.*]

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

編集 削除
LESIA  2005-04-01 11:50:39  No: 120615  IP: [192.*.*.*]

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 12:09:40  No: 120616  IP: [192.*.*.*]

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

編集 削除
 2005-04-01 12:40:51  No: 120617  IP: [192.*.*.*]

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

編集 削除
あんび  2005-04-05 15:33:24  No: 120618  IP: [192.*.*.*]

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

編集 削除
。。。  2005-04-05 19:06:55  No: 120619  IP: [192.*.*.*]

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

編集 削除