タイトル | : Re: IF文で判断ミス |
記事No | : 13675 |
投稿日 | : 2009/05/15(Fri) 09:46 |
投稿者 | : GOD |
> 例えば、検査項目cに関して規格最大が6規格最小が0の場合でグリッド上の > 検査結果が5でも判定結果が不良と判断されたり、同検査項目で検査結果が1 > で合格と判断されます。 > 私が見る限りではおかしい所は無いと思えるのですが、記述の誤りで判断結果 > がおかしいのか、それともIF文自体をこういった形でたくさん使用しているの > が悪いのか、ご指摘ご指導して頂ければ勉強になります。 > 投稿されたコードに c 部分がないので正しいかどうかは掲示板を見ている人には分かりません。
余分なことかもしれませんが↓は関数化できませんか。(aとbの比較法が同じなのでできると思うのですが、c〜zでは違う方法で比較しているのかな。) > Select Case INSDATARS!Max a > Case "0" > Select Case INSDATARS!Min a > Case 0 '●規格無 > Case Is > 0 '●下限片側規格 > If .TextMatrix(ROWNO, 2) < INSDATARS!Min a Then OUT_F = "1" > End Select > Case Is > 0 > Select Case INSDATARS!Min a > Case 0 '●上限片側規格 > If .TextMatrix(ROWNO, 2) > INSDATARS!Max a Then OUT_F = "1" > > Case Is > 0 '●両側規格 > If .TextMatrix(ROWNO, 2) > INSDATARS!Max a Then OUT_F = "1" > If .TextMatrix(ROWNO, 2) < INSDATARS!Min a Then OUT_F = "1" > End Select > End Select ----------- 呼び出し側 Dim OUT_F As Boolean Dim strErr As String
Do Until INSDATARS.EOF With MSFlexGrid1 'aの処理 OUT_F = FuncName(.TextMatrix(ROWNO, 2), INSDATARS!Min a, INSDATARS!Max a) If OUT_F Then strErr = strErr & "a不良," End If 'bの処理 OUT_F = FuncName(.TextMatrix(ROWNO, 3), INSDATARS!Min b, INSDATARS!Max b) If OUT_F Then strErr = strErr & "b不良," End If 'c〜zの処理 ' If Right(strErr, 1) = "," Then strErr = Left(strErr, Len(strErr) - 1) End If .TextMatrix(ROWNO, 20) = strErr End With ROWNO = ROWNO + 1 INSDATARS.MoveNext Loop ---------------------------------- '【機 能】 ' CompVal が規格内に収まっているか確認する '【引き数】 ' CompVal :比較する値 ' MinVal :最小値 ' MaxVal :最大値 '【戻り値】 ' True :正常値 ' False :異常値 Private Function FuncName(CompVal As Long, MinVal As Long, MaxVal As Long) As Boolean blnRet As Boolean
blnRet = True Select Case MaxVal Case 0 Select Case MinVal Case 0 '●規格無 Case Is > 0 '●下限片側規格 If CompVal < MinVal Then blnRet = False End Select Case Is > 0 Select Case MinVal Case 0 '●上限片側規格 If CompVal > MaxVal Then blnRet = False Case Is > 0 '●両側規格 If CompVal > MaxVal Then blnRet = False If CompVal < MinVal Then blnRet = False End Select End Select End Function
|