Page 462 ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 通常モードに戻る ┃ INDEX ┃ ≪前へ │ 次へ≫ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ ▼do loopに関する質問 あみやき 02/12/16(月) 17:07 ┗Re:do loopに関する質問 こうちゃん 02/12/17(火) 8:58 ┗Re:do loopに関する質問 あみやき 02/12/17(火) 9:40 ─────────────────────────────────────── ■題名 : do loopに関する質問 ■名前 : あみやき ■日付 : 02/12/16(月) 17:07 -------------------------------------------------------------------------
下記の処理で、wsB.Cells(j,1)空白でも処理が行えるはずなのですが、wsB.Cells(j,1)が全て空白になると無限ループしてしまいます。 終了条件にorは使えないのでしょうか? どなたか、ご指導ください。 Do KEYOS = wsB.Cells(j, 1) KEYKI = wsB.Cells(j, 6) KEYONO = wsB.Cells(j, 5) j = j + 1 Do If wsB.Cells(j, 6) <> KEYKI Then If wsB.Cells(j, 1) = KEYOS Then wsT.Cells(RowCNT, 8) = KEYONO wsB.Cells(j, 5).Copy wsT.Cells(RowCNT, 9) RowCNT = RowCNT + 1 KICNT = KICNT + 1 Else End If End If j = j + 1 Loop While wsB.Cells(j, 1) = KEYOS Or wsB.Cells(j, 6) <> 0 Loop While wsB.Cells(j, 6) <> 0 |
あみやきさん、こんにちは >下記の処理で、wsB.Cells(j,1)空白でも処理が行えるはずなのですが、wsB.Cells(j,1)が全て空白になると無限ループしてしまいます。 >終了条件にorは使えないのでしょうか? Orも、もちろん使えますよ。 >Do > KEYOS = wsB.Cells(j, 1) > KEYKI = wsB.Cells(j, 6) > KEYONO = wsB.Cells(j, 5) > > j = j + 1 >Do > If wsB.Cells(j, 6) <> KEYKI Then > If wsB.Cells(j, 1) = KEYOS Then > wsT.Cells(RowCNT, 8) = KEYONO > wsB.Cells(j, 5).Copy wsT.Cells(RowCNT, 9) > RowCNT = RowCNT + 1 > KICNT = KICNT + 1 > Else > End If > End If > j = j + 1 >Loop While wsB.Cells(j, 1) = KEYOS Or wsB.Cells(j, 6) <> 0 最初にKEYOSにwsB.Cells(j, 1)の値を代入していますので、wsB.Cells(j, 1)がEmpty値のとき、ループに入ったときのKEYOSはEmpty値になっています。 ここでループ判定でwsB.Cells(j, 1)がEmpty値の場合、KEYOS、wsB.Cells(j, 1)ともにEmpty値になりますので、判定は真になります。 判定はOr条件ですので、どちらかが真なら真となりますから、当然ループすると思いますが。 >Loop While wsB.Cells(j, 6) <> 0 なにをしたいのかが書いてありませんので、これ以上のアドバイスは難しいのですが、最初にwsB.Cells(j, 6)値を判定して、処理を分岐したらいかがですか? #蛇足ですが、j = j + 1 の場所は正しいのですか?2つ目のループに入るとjが必ずインクリメントされますから、1行飛ばして判定しているようですが・・ まあ、こちらも”何をしたいか”がわからないので、ほんとの蛇足かもしれませんが・・(^^;) |
こうちゃん さん、おはようございます。 ご丁寧に解説していただき、ありがとうございます。 こうちゃんさん、のおかげでループに関して、理解することができました。 どうやら、終了条件のandとorを勘違いしていたようです・・・。 J=J+1のご指摘はキーをその行に変え、そのキーに対して処理を行いたかったので、問題はないと思います。 すごいわかりづらいなか、丁寧なご指導、ほんとに感謝しております。 ありがとうございました。 今後ともよろしくお願いします。 |