- ベストアンサー
vba ;制御
下記でhakkenn = 1 '******** のところから次は next iの直前にいくようにプログラムをランさせるにはどう記述すればよいか。 よろしくお願いします。 For i = 3 To d hakken = 0 For ui = CELL_S To (CELL_E - CELL_S + 1) If Worksheets("sheet2").Cells(i, "D") = Worksheets("user").Cells(ui, "A") Then Worksheets("user").Cells(ui, ichi) = "◎" hakkenn = 1 '******** Else End If Next ui If hakkenn = 1 Then Else Worksheets("user2").Cells(ui, "D") = Worksheets("sheet2").Cells(i, "D") End If Next i
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
gotoはコードの可読性の面から考えてあまり使用しない方がいいでしょう。 質問の件は、If文の比較演算子をかえ、ExitForを使うことでGoto文を回避するようにします。 そしてまた、お分かりだと思いますが、 今回の場合は、Next ui を抜けるだけでよく、 わざわざ、Next i の直前に飛ばす必要はないものと考えます。 '------------------------------------------------- Sub test() For i = 3 To d hakken = 0 For ui = CELL_S To (CELL_E - CELL_S + 1) If Sheets("Sheet2").Cells(i, "D") = Sheets("user").Cells(ui, "A") Then Sheets("user").Cells(ui, ichi) = "◎" hakkenn = 1 '******** Exit For End If Next ui If hakkenn <> 1 Then Sheets("user2").Cells(ui, "D") = Sheets("sheet2").Cells(i, "D") End If Next i End Sub '-------------------------------------------------- 以上。
その他の回答 (3)
- okormazd
- ベストアンサー率50% (1224/2412)
ラベルをつくってそこに飛ばすだけですが。 For i = 3 To d hakken = 0 For ui = CELL_S To (CELL_E - CELL_S + 1) If Worksheets("sheet2").Cells(i, "D") = Worksheets("user").Cells(ui, "A") Then Worksheets("user").Cells(ui, ichi) = "◎" hakkenn = 1 '******** goto nxt Else End If Next ui If hakkenn = 1 Then Else Worksheets("user2").Cells(ui, "D") = Worksheets("sheet2").Cells(i, "D") End If nxt: Next i
お礼
自分ではgotoは使わないものと決めていましたので、説明たらずでした。 ご回答どうもありがとうございました。
- project-a
- ベストアンサー率54% (107/195)
すみません#1です、間違えました。 ラベルは、"JUMP1:" です。 ラベル名+":" です。
お礼
自分ではgotoは使わないものと決めていましたので、説明たらずでした。 ご回答どうもありがとうございました。
- project-a
- ベストアンサー率54% (107/195)
(例) For i = 3 To d hakken = 0 For ui = CELL_S To (CELL_E - CELL_S + 1) If Worksheets("sheet2").Cells(i, "D") = Worksheets("user").Cells(ui, "A") Then Worksheets("user").Cells(ui, ichi) = "◎" hakkenn = 1 '******** goto JUMP1 Else End If Next ui If hakkenn = 1 Then Else Worksheets("user2").Cells(ui, "D") = Worksheets("sheet2").Cells(i, "D") End If :JUMP1 Next i ================================ ジャンプ先に ":"+ラベル名 (ラベル名は任意)にして、 goto 文でジャンプさせます。
お礼
質問したいことをずばり回答 大感謝いたします。