- ベストアンサー
if文について Excel 2007 VBAでの不具合に対処方法は?
- Excel 2007 VBAを使用している際、if文で不具合が発生することがあります。特に商品シートのC列やJ列、W列において、該当した年月や特定の状況以外のデータを検出できない問題が報告されています。対処方法を教えてください。
- Excel 2007 VBAを使用している場合、if文の中で特定の条件に合致したデータを検出する際に問題が起きることがあります。具体的には、商品シートのC列、J列、W列に該当する特定の年月や状況以外のデータを検出できないという報告があります。この問題の対処方法を教えてください。
- Excel 2007 VBAを使用している際、if文で特定の条件に合致しないデータを検出できないという問題が報告されています。具体的には、商品シートのC列に保存されている状況や、J列やW列に存在するデータを正しく検出できない場合があります。この問題の対処方法を教えてください。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
IF文の中のデータをそれぞれ先に変数に代入してみて inSheet.Rows(i).Copy outSheet.Rows(cnt + 2) あたりをブレークポイントにして ご自身が想像している値と変数の値が合致して論理式の部分がすべてTRUEになっているかどうか確認してみてはいかがでしょうか。
その他の回答 (1)
- YUKKER
- ベストアンサー率44% (74/168)
気になったのですが、このIF文の書き方だと テキストボックスに入力した日付より過去であっても 月がテキストボックスのものより大きいと抽出されませんし、 入力した年月と同じだと日が未来でも抽出されてしまいますが、 こういう仕様でよいのでしょうか? また、cntが全くカウントされてないため、 抽出したものが延々と二行目に上書きされてしまい、 せっかく抽出しても1行しか出力されないと思いますよ。 あと、最初にOption Explicitと記述しているのに、 変数cntが宣言されている箇所が見当たりません。 #1さんの仰るように、ご自身でデバックして確認してみてください。 DateDiffという関数があるようです。 http://www.red.oit-net.jp/tatsuya/vb/date.htm#DateDiff これを利用して、問題のIF文を下記のように書けませんか? '--------機能しない箇所(開始) If DateDiff("d", inSheet.Cells(i, "J").Value, Me.TextBox21.Value) >= 0 And _ CStr(inSheet.Cells(i, "W").Value) <> "受取済み" And CStr(inSheet.Cells(i, "W").Value) <> "注文中" Then '--------機能しない箇所(終了) inSheet.Rows(i).Copy outSheet.Rows(cnt + 2) cnt = cnt + 1 End If