| 
    
     |  | ▼K.C さん: おはようございます。
 処理速度を上げる方法はあると思いますが、それは別の方におまかせするとして・・。
 このコードで疑問があったので質問です。
 
 >Sub test()
 >
 >Dim n, o, m, x, y, i As Double
 >n = Range("A1").End(xlDown).Row
 >o = Range("B1").End(xlDown).Row
 >
 >For m = 1 To o
 >
 >  x = Cells(m, 2)
 >st1:
 >  For i = 1 To n
 >
 >    If Cells(i, 1) <= x And x <= Cells(i + 1, 1) Then
 >    y = i + 1
 >
 >    GoTo st2
 >
 >    ElseIf Cells(i, 1) > x And x > Cells(i + 1, 1) Then
 '       このIF文にひっかかるcells(i,1)という値の一例を教えて下さい
 '       ここに入ってくるcells(i,1)って存在しないのではないですか?
 '       もしかして、Andではなくて、Orですか?
 '       でも、そうだとしたらこれループしっぱなしになってしまいますよ。
 >
 >    GoTo st1
 >
 >    ElseIf Cells(1, 1) > x Then
 >    y = 2
 >    GoTo st2
 >
 >    ElseIf Cells(n, 1) < x Then
 >    y = n
 >    GoTo st2
 >
 >    End If
 >  Next
 >st2:
 >
 >  Cells(m, 3).Value = y
 >
 >Next
 >
 >End Sub
 それから、Goto文を否定するわけではないのですが、
 上のコード、Goto文を入れない方が見やすいコードになりませんか?
 
 
 |  |