2016-12-09 1 views
-1

ループが終了しないのはなぜですか?ループの終了に失敗しました

Sub sssssssscrscr() 
    x = "ABCDEFGHIJKLMNOPQRSTUVXZWY" 
    For i = 1 To Len(x) 
     For j = 1 To Len(x) 
      ActiveCell.Value = Mid(x, i, j) 
      'MsgBox ActiveCell.Value 
      If ActiveCell.Value = "B" Then Exit For 
     Next 
    Next 
End Sub 
+2

あなたは2つの 'For'ループを持ち、最初のものだけを終了します。 –

+0

ありがとうDoug Glancy – user2284877

+1

ループ*は*終了します。あなたが達成しようとしていることは明確ではありません。 – trincot

答えて

3

代わりExit Forの(メッセージボックスがアクティブである場合、それは値「B」を示して)あなたはマクロから抜け出すためにExit Subに入れることができ、完全

1

ダグGlancyが言うように、1以上の出口に必要な:)

Sub sssssssscrscr() 
x = "ABCDEFGHIJKLMNOPQRSTUVXZWY" 
For i = 1 To Len(x) 
For j = 1 To Len(x) 
ActiveCell.Value = Mid(x, i, j) 
'MsgBox ActiveCell.Value 
If ActiveCell.Value = "B" Then Exit For 
Next 
If ActiveCell.Value = "B" Then Exit For 
Next 
End Sub 
0

あなたはどんなループを必要としません。

あなたがループ内ActiveCell's場所を変更しているので、(複数可)に必要なものは次のとおりです。

ActiveCell.Value = "B" 
+0

彼は 'ActiveCell'の位置を変更しておらず、その値を更新するだけです。 – Mike

0

これは、更新されているものの細胞に変化することなく、同じセルの値を複数回変更されます。

ループを終了する場合は、両方を終了する必要があります。あなたはまた、あなたがマクロが終了する前に行うことにしたい何かを追加することができますEndLoop:

Sub sssssssscrscr() 
    x = "ABCDEFGHIJKLMNOPQRSTUVXZWY" 
    For i = 1 To Len(x) 
     For j = 1 To Len(x) 
      ActiveCell.Value = Mid(x, i, j) 
      'MsgBox ActiveCell.Value 
      If ActiveCell.Value = "B" Then goto EndLoop 
     Next 
    Next 
    EndLoop: 
    'more code goes here 
End Sub 

:あなたはこのように、これを達成するためにGoToを使用することができます。

これが何をしているのかわかったら、私たちはもっと助けることができます。あなたが提供した情報が限られているため、これはおそらく私たちが本当にできることです。

関連する問題