みなさんおしえてください。
質問文
みなさんおしえてください。
今、VB6で電子天秤をPCに接続して、測定データを取り込むソフトを作っています。 こちらのいろいろな方々の質問と回答を参考して、下記のようなデータをテキストボックスへ
取り込むことができました。電子天秤からは、300個のデータを取り込もうと思っています。
いま悩んでいるのは、データを取り込んで測定値がNGかOKかを判定したく下記のような
プログラムを書いたのですが、うまく動作しなく悩んでいます。
動作は、「???.00 DATA」を除いた後ろのデータ「0.??」が、0.3未満であれば「OK」、0.31
以上であれば「NG」とメッセージボックスを出したいと考えています。
※データ取り込み後は、ENTERキーを押して改行します。
この判定を、ENTERキーを押して改行した際に毎回行いたいのですが、テキストボックス
の2行目以降に取り込んだ測定値を判定すると、0.31以上でも「OK」と出てしまいます。
2行目以降のデータもちゃんと「OK」「NG」が判定できるようにするためには、どのように
プログラムを変更すればよいか教えて頂けませんでしょうか?
よろしくお願いします。
<電子天秤からのデータ>
001 0.02
002 0.00
・ ・ ・
・ ・ ・
・ ・ ・
<プログラム>
Sub 計算()
Dim ans As Integer
Dim num As Currency
ans = Mid(txt1.text, 5, 4)
num = Val(ans)
If num <= 0.3 Then
MsgBox "正解"
ElseIf num >= 0.31 Then
MsgBox "NG"
End If
End Sub
Private Sub Command1_Click()
計算
End Sub
Private Sub txtInputData_KeyPress(KeyAscii As Integer)
If KeyAscii = 13 Then
計算
End If
End Sub
回答
イレギュラー値に対しての対策がまだ不十分ですが、以下でどうでしょうか。
Option Explicit
Private checkedNum As Integer
Sub 計算()
Dim ans() As String
Dim i As Integer
Dim num As Currency
ans = Split(txt1.Text, vbLf)
For i = checkedNum To UBound(ans)
If ans(i) <> "" Then
num = -1
On Error Resume Next
num = Val(Mid(ans(i), 5))
On Error GoTo 0
If num < 0 Then
MsgBox "イレギュラー"
ElseIf num <= 0.3 Then
MsgBox "正解"
Else
MsgBox "NG"
End If
checkedNum = checkedNum + 1
End If
Next i
End Sub
Private Sub Command1_Click()
計算
End Sub
Private Sub txt1_KeyPress(KeyAscii As Integer)
If KeyAscii = 13 Then
計算
End If
End Sub