• ベストアンサー

IFとANDの組み合わせ

VBAで、条件を2つとも満たす場合について、 という式を作りたいと思っています。 ElseIf Cells(gyou + 1, 5).Value = 0 And Cells(gyou, 5).Value = 0 Then という式を作ったのですが、どこか誤りがありますか。 もし、上下のセルが「0」の場合・・・という式のつもりでしたが 機能しない、ということもありますし、そもそも、AND関数はエクセルの関数のためこのような使い方をしていいものか定かではありません。

質問者が選んだベストアンサー

  • ベストアンサー
  • HohoPapa
  • ベストアンサー率65% (455/693)
回答No.3

ElseIf Cells(gyou + 1, 5).Value = 0 And Cells(gyou, 5).Value = 0 Then このコードは、文法的に間違いはありませんし、  Cells(gyou + 1, 5).Value = 0  Cells(gyou, 5).Value = 0 この双方の条件を満たした場合に使うコードです。 しかし、 このコードが必ず実行されるという保証はありません。 とりわけ、 ElseIf とありますので、このコードよりも前の IF文や、ElseIf文に該当してしまえば、 問題のコード部分は実行されません。 つまり、 >機能しない、ということもありますし という可能性があるということです。 まずは、 IF文全体を再確認するか、 IF文全体をポストし、識者の方にみてもらったほうがいいと思います。

その他の回答 (2)

  • imogasi
  • ベストアンサー率27% (4737/17070)
回答No.2

・VBAの質問であることを表題に明記せよ。 ・ElseIf Cells(gyou + 1, 5).Value = 0 And Cells(gyou, 5).Value = 0 Then について、質問社の例題に即して、やりたいとを、文章で説明せよ ・Googeで「vba and 演算子」で照会したら仕舞では。 ーー 意味がよく判らんが、参考に。 例データ B1:C5 10 該当 18 9 該当 16 25 ーー 標準モジュールに Sub test01() For i = 1 To 5 x = Cells(i, "B").Value y = Cells(i + 1, "B").Value If y > 10 And y < 20 Then Cells(i, "C").Value = "該当" End If Next i End Sub で実行。 なんてどうだろう。結果は上記C列の通り。

  • MT765
  • ベストアンサー率57% (2091/3632)
回答No.1

ElseIfではなくて普通にIf文でOKです。 If Cells(gyou + 1, 5).Value = 0 And Cells(gyou, 5).Value = 0 Then 処理 あとは上下のセルという事なので二つ目の条件式はgyou-1ではないでしょうか。

関連するQ&A