問題[1]とおなじことを、exit for を使わずに、andを使って以下のように書いても実現できました。
Sub futankin1()
Dim gyo
For gyo = 4 To 37
If Range("B" & gyo).Value > Range("E4").Value And Range("E4").Value > Range("A" & gyo).Value Then
Range("F4").Value = Range("C" & gyo).Value
End If
Next
End Sub
しかし、if文で、 If Range("B" & gyo).Value > Range("E4").Value > Range("A" & gyo).Value Then
と書くと動かないようです。
なぜなのか、いまいち腑に落ちないのですが、なぜなのでしょうか?
2016/04/01 18:04
小川慶一さんのコメント
(コメントID: 3623)
多和田 真也 さん:
>しかし、if文で、 > If Range("B" & gyo).Value > Range("E4").Value > Range("A" & gyo).Value Then > >と書くと動かないようです。
多和田 真也さんの投稿
(投稿ID: 2205)
問題[1]とおなじことを、exit for を使わずに、andを使って以下のように書いても実現できました。
しかし、if文で、
If Range("B" & gyo).Value > Range("E4").Value > Range("A" & gyo).Value Then
と書くと動かないようです。
なぜなのか、いまいち腑に落ちないのですが、なぜなのでしょうか?
小川慶一さんのコメント
(コメントID: 3623)
>しかし、if文で、
> If Range("B" & gyo).Value > Range("E4").Value > Range("A" & gyo).Value Then
>
>と書くと動かないようです。
↑文法的にはギリギリ誤りではないのですが、得られる評価値が多和田さんの求めるものにならないからです。
詳しくは「発展編2」の「式と戻り値」という項で扱うのでここでは詳しくは書けませんが、比較演算子を複数ならべると、そのうち先に演算されたほうの結果は True/False を返しますので、もうひとつの演算子は、その True/False 値との比較をしてしまうからです。
これ以上は今の段階では説明しようがありません。ともあれ、「比較演算子はひとつまで」ということでまずは理解しておいてください。