現在VB6でデジボルの測定データをパソコンへ取り込む…

現在VB6でデジボルの測定データをパソコンへ取り込む…

質問文

みなさん教えてください。

現在VB6でデジボルの測定データをパソコンへ取り込むソフトを作っています。 

デジボルとパソコンは測定できたのですが、ソフト上の処理でうまくいかず困っています。 ここで質問された方の例を参考に、構文を書いてみました。

やりたいのは、リッチテキストボックスにデジボルから取り込んだデータをもとに、合格か
不合格を判定したいと思っています。

からは、300個のデータを取り込もうと思っています。

いま悩んでいるのは、データを取り込んで測定値がNGかOKかを判定したく下記のような
プログラムを書いたのですが、うまく動作しなく悩んでいます。

やりたいのは、「2016/03/13 2.10」の「2016/03/13」を除いた後ろのデータを、6未満であれば
測定値を赤文字に変えて、それ以外は青文字変えたいと考えています。
この色を変えるのは、ENTERキーを押し改行しても行えるようにしたいと思っています。

自分で構文を書いてみましたが、1行目に入寮した数値は黒文字になり、それ以降の数値は
6以上でも赤文字になってしまいます。原因がわかりません。

まだVB6を始めたばかりで、ここで見つけた回答をもとに勉強しながらプログラムしています。
このような私ですが、どうか助言をいただけないでしょうか?
初心者の私ですが、どうかご協力をお願いします。

 
デジボルから取り込んだデータ
2016/03/13 2.10
2016/03/13 1.00.
2016/03/13 9.55
 ・ ・ ・
 ・ ・ ・

プログラム
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 <= 6 Then
 txtInputData.SelColor = RGB(255, 0, 0)
 MsgBox "合格"
 
 Else
 txtInputData.SelColor = RGB(0, 0, 255)
 MsgBox "不合格"
 
 End If
 
 checkedNum = checkedNum + 1
 End If
 Next i
 
 End Sub

Private Sub Command5_Click()
電圧測定
End Sub

 Private Sub txtInputData_KeyPress(KeyAscii As Integer)
 If KeyAscii = 13 Then
 電圧測定
 End If
 End Sub

回答

こんな感じでどうでしょうか。
ユーザーフォームにボタン(Captionを「初期化」、オブジェクト名をInitCommandに設定)を追加して下さい。
これが完全なプログラム、という訳ではありませんが、
あとはご自分で試行錯誤しながら勉強して下さい。
プログラミングは悪戦苦闘するほど身に付きます!

Option Explicit

Private checkedNum As Integer
Private start As Integer

Sub 初期化()
 txtInputData.Text = ""
 checkedNum = 0
 start = 0
 txtInputData.SetFocus
End Sub

Sub 電圧測定()
 Dim ans() As String
 Dim i As Integer
 Dim num As Currency
 'リッチテキストボックスの内容を一行ごとにansに格納する
 ans = Split(txtInputData.Text, vbLf)
 'checkedNum行目から判定を行う
 For i = checkedNum To UBound(ans)
 If ans(i) <> "" Then
 num = -1
 On Error Resume Next
 'i行目のデータの12文字目以降を数値化してnumに格納する
 num = Mid(ans(i), 12) + 0
 On Error GoTo 0
 '文字色を変える範囲を設定する
 txtInputData.SelStart = start
 txtInputData.SelLength = Len(ans(i)) + 1
 '測定値の判定
 If num < 6 Then
 'numが6未満なら不合格(赤)
 txtInputData.SelColor = RGB(255, 0, 0)
 MsgBox "不合格"
 Else
 'numが6未満でない(6以上)なら合格(青)
 txtInputData.SelColor = RGB(0, 0, 255)
 MsgBox "合格"
 End If
 '次に文字色を変える位置を設定する
 start = start + Len(ans(i)) + 1
 '次に判定する行位置を設定する
 checkedNum = checkedNum + 1
 End If
 Next i
 'リッチテキストボックスの文字色を黒にする
 txtInputData.SelStart = start
 txtInputData.SelLength = 0
 txtInputData.SelColor = RGB(0, 0, 0)
End Sub

Private Sub Form_Activate()
 初期化
End Sub

Private Sub Command5_Click()
 電圧測定
 txtInputData.SetFocus
End Sub

Private Sub InitCommand_Click()
 初期化
End Sub

Private Sub txtInputData_KeyPress(KeyAscii As Integer)
 If KeyAscii = 13 Then
 電圧測定
 End If
End Sub

Leave a Reply

Your email address will not be published. Required fields are marked *