• ベストアンサー

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

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

  • ベストアンサー
  • onlyrom
  • ベストアンサー率59% (228/384)
回答No.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 '-------------------------------------------------- 以上。

taktta
質問者

お礼

質問したいことをずばり回答 大感謝いたします。

その他の回答 (3)

  • okormazd
  • ベストアンサー率50% (1224/2412)
回答No.3

ラベルをつくってそこに飛ばすだけですが。 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

taktta
質問者

お礼

自分ではgotoは使わないものと決めていましたので、説明たらずでした。 ご回答どうもありがとうございました。

  • project-a
  • ベストアンサー率54% (107/195)
回答No.2

すみません#1です、間違えました。 ラベルは、"JUMP1:" です。 ラベル名+":" です。

taktta
質問者

お礼

自分ではgotoは使わないものと決めていましたので、説明たらずでした。 ご回答どうもありがとうございました。

  • project-a
  • ベストアンサー率54% (107/195)
回答No.1

(例) 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 文でジャンプさせます。

関連するQ&A