if文で条件を指定するときに、if文1行に複数指定できないでしょうか?
AまたはBまたはCの時に処理を行う。
みたいな。
A or B or C Then って事ですか?
その通りなのですが、『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
その通りなのですが、『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
If InStr(strBUFF, "260") Or InStr(strBUFF, "261") Or InStr(strBUFF, "999") Then
じゃないの?
Debug.Print " 260" Or " 261" Or " 999" とすると、" 999"になるので
If InStr(strBUFF, " 260" Or " 261" Or " 999") Then
は
If InStr(strBUFF, 、" 999") Then
と同じになります。
ヘルプを見れば一目瞭然だけど
InStr関数の引数は『1 つの文字列に評価される式』です。
ということで、
IF文で複数の条件式を入れる・・・。というのではなくこの場合
InStr関数の使い方が間違っています。
ありがとうございました。
勉強不足でした。
もう、解決しちゃってるようですが
SELECT CASE を使った方がプログラム見やすくなりますよ。
(あくまで、みやすく・・・ね)
VB6以前の場合、ムダな評価が行われるから、ネストしてやった方がパフォーマンスはいいだろう。
VB.NETならAndAlso、OrElseが使えるのが嬉しいな。
ツイート | ![]() |