| 
    
     |  | セルの値を変数1に格納し、次のセルの値を変数2に格納。 変数2>変数1の時、Trueを返すようなコードを作成しました。
 
 Sub test1()
 Dim ws As Worksheet
 Dim aaa() As Long
 Dim i As Long
 Set ws = ThisWorkbook.Sheets(1)
 ws.Range("b:c").ClearContents
 ws.Range("c1:c20").Value = [{1;2;3;4;5;6;7;8;9;10;11;12;13;14;15;16;17;18;19;20}]
 For i = 1 To ws.Range("C1").End(xlDown)
 ReDim Preserve aaa(i): aaa(i) = ws.Cells(i, 3)
 If aaa(i) > aaa(i - 1) And aaa(i - 1) <> 0 Then ws.Cells(i, 2) = "True"
 Next i
 End Sub
 
 上記のコードでは全て True を得られます。
 
 次に、セルからの取得ではなく、ファイルから値を取得し、
 上記と同じように True を得るコードを作成しました。
 aaa.txt は 1, 2, ・・・,20 と1行毎に数値があるとします。
 
 Sub test2()
 Dim ws As Worksheet
 Dim Ln As String
 Dim aaa() As Long
 Dim i As Long
 Set ws = ThisWorkbook.Sheets(1)
 i = 0
 ws.Range("a:a").ClearContents
 Open "aaa.txt" For Input Access Read As #1
 Do Until EOF(1)
 Line Input #1, Ln
 i = i + 1
 ReDim aaa(i): aaa(i) = LTrim(Left(Ln, 8))
 If i > 1 Then
 If aaa(i) > aaa(i - 1) And aaa(i - 1) <> 0 Then ws.Cells(i, 1) = "True"
 End If
 Loop
 Close
 End Sub
 
 やっていることは、同じだと思っているのですが、
 test2 では True が得られません。
 原因を教えていただけないでしょうか?
 よろしくお願いします。
 
 |  |