|
▼ちゃっぴ さん:
お世話になっております。
前回は、ファイルをまわす変数と出力する先をまわす変数は別々にしないといけないのかなと思っていたのですが、双方列なので同じでもいいみたいですね。
ここでは、変数名をファイルxとしました。
これで動かすと、1つ目のファイルは、うまく動くのですが、2つ目のファイルがいこうがおかしいです。
1つ目のファイルのエラーが出力された、左斜め下(1,3だとすると2,4)から出力されます。さらに出力された値は、1つ目のファイルの最終行に加算された値となっています。ただ、行の番号は全然違うのですが、エラーの数だけを数えるとあっています。1ファイルずつまわすとうまくいくのですが。。。。
矢印(←)のところに1つ目のファイルが終わったら、2行目にから出力するといった命令文みたいなものを入れないといけないのでしょうか。そもそも、おかしいのでしょうか?
お手数ですが、ヒントいただけないでしょうか?
Sub S_ChkError()
Dim strFilePath As String
Dim strBuffer As String
Dim vntDivBuf As Variant
Dim lngLineNo As Long
Dim i As Long, j As Long
Dim ファイルx As Long
j = 2 '2行目
For ファイルx = 1 To 3
strFilePath = Cells(1, ファイルx)
'テキストファイルオープン
Open strFilePath For Input As #1
'最終行までループ
Do
'行番号インクリメント
lngLineNo = lngLineNo + 1
'1行読み出し
Line Input #1, strBuffer
'各要素に分解(配列に格納)
vntDivBuf = Split(strBuffer, " ")
'同じ値がないかマッチング
For i = 0 To 1
If vntDivBuf(i) = vntDivBuf(i + 3) _
Or vntDivBuf(i) = vntDivBuf(i + 6) _
Or vntDivBuf(i + 3) = vntDivBuf(i + 6) Then
'セルへの出力を記述してください
Sheets("Sheet1").Cells(j, ファイルx).Value = lngLineNo
j = j + 1
Exit For
End If
Next i
Loop Until EOF(1)
Close #1
←ここです
Next ファイルx
End Sub
|
|