質問文
みなさん教えてください。
現在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