• ベストアンサー

VB Forから抜ける

Data1(1, 1) = "りんご" Data1(1, 2) = "みかん" Data1(2, 1) = "なし" Data1(2, 2) = "オレンジ" Data2(1, 1) = "バナナ" Data2(1, 2) = "みかん" Data2(2, 1) = "なし" Data2(2, 2) = "いちご" -------------------- Dim c, i As Integer For c = 1 To 2 For i = 1 To 2 If Data1(c, i) <> Data2(c, i) Then MessageBox.Show("異なります") GoTo goto1 End If Next Next goto1: ----------------- 言語 VB.NET Data1とData2 の中身が異なればアラートを出す。 (複数異なっていても1度のみアラートを出す) さて これを「GOTO」を使わないでする方法ってあるんでしょうか? 「EXIT Sub」はgoto1:の下にもコードがあるので使えません。 GoTo goto1を Exit For にしても 「i」 のループが抜けるだけです。 これを「C」のループを抜けるようなコードってあるんでしょうか?

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

  • ベストアンサー
  • pringlez
  • ベストアンサー率36% (598/1630)
回答No.4

基本的にはループ部分だけをサブルーチンにするのがいいと思います。 それ以外だとフラグを持たせてループが終わったあとに結果表示とか。 これだと1つ違いがあっても判定をし続けるので無駄ですが 量が多くなければ無駄といっても一瞬です。 どちらもGOTOを使うよりはいいと思います。 Dim f f = false For c = 1 To 2 For i = 1 To 2 If Data1(c, i) <> Data2(c, i) Then f = true End If Next Next If f Then MessageBox.Show("異なります") End If

keniti_246
質問者

お礼

ご回答ありがとうございました。

その他の回答 (3)

  • DESTROY11
  • ベストアンサー率23% (804/3490)
回答No.3

For c = 1 To 2 For i = 1 To 2 If Data1(c, i) <> Data2(c, i) Then MessageBox.Show("異なります") c=3 i=3 'GoTo goto1 End If Next Next 間違いなく抜けます

keniti_246
質問者

お礼

ご回答ありがとうございました。

  • hotosys
  • ベストアンサー率67% (97/143)
回答No.2

こんなのはどうでしょうか? Do For c = 1 To 2 For i = 1 To 2 If data1(c, i) <> data2(c, i) Then MessageBox.Show("異なります") Exit Do End If Next Next Loop Until True またはその部分だけをサブルーチンにしてはどうでしょうか? Function checkData(ByVal data1(,) As String, ByVal data2(,) As String) As Boolean For c As Integer = 1 To 2 For i As Integer = 1 To 2 If data1(c, i) <> data2(c, i) Then MessageBox.Show("異なります") Return False End If Next Next Return True End Function を checkData(data1, data2) または Dim f As Boolean = checkData(data1, data1) などで呼び出せばいいと思います。 p.s. vb.netでは Dim c, i As Integer For c = 1 To 2 For i = 1 To 2 としなくても For c As Integer = 1 To 2 For i As Integer = 1 To 2 などと宣言と使用を同時にできるようです。

keniti_246
質問者

お礼

ご回答ありがとうございました。

  • ShowMeHow
  • ベストアンサー率28% (1424/5027)
回答No.1

boo = false For c = 1 To 2 For i = 1 To 2 If Data1(c, i) <> Data2(c, i) Then MessageBox.Show("異なります") boo = true exit for End If Next if boo = true then exit for Next とか、

keniti_246
質問者

お礼

ご回答ありがとうございました。

関連するQ&A