DO~LOOP でのLOOPの抜け方
コマンドボタンを押して(スタートボタン)DO~LOOPで実行しているときにストップコマンドボタンを押してストップさせるときの LOOPの抜け方がわかりません。すみませんがよろしくお願いします。
回答(7件)
- 最新から表示
- |
- 回答順に表示
- |
- ベストアンサーのみ表示
#1,5です。 #6の回答について。
>Public stop_flag As String
stop_flag は、True/False の値を持つ型なので String ではなく
Boolean ですよね。
この回答へのお礼
わかりました!IF文を置く場所が悪かったのがわかりました。回答有難うございました。
No.6ベストアンサー20pt
#2と#4のtinu2000です。
stop_flag を共通変数にしないと、それぞれ別の変数とみなします。
ここから下をコピー&ペーストして見て下さい。
Public stop_flag As String
Private Sub CommandButton1_Click()
Dim i As Integer, n As Integer, b As Integer, a As Integer
stop_flag = False
Do
a = 1
For i = 0 To 7
Range("a1") = a
For n = 0 To 500
Next n
a = a + 1
Next i
a = 2
For b = 0 To 7
Range("b1") = a
For n = 0 To 500
Next n
a = a * 2
Next b
DoEvents
If stop_flag = True Then Exit Do
Loop
End Sub
Private Sub CommandButton2_Click()
stop_flag = True
End Sub
この回答への補足
回答有難うございました。とりあえずLoop地獄から出ることが出来ました。有難うございました。ただMovingWalk様のところにも書いたのですが、Loopが終わらないと出ない・・。STOPButtonを押したらその場でLoopから出るようにするにはどのようにすればいいのでしょうか?すみませんがよろしくお願いします。
この回答へのお礼
IF文を置く位置が悪かったのがわかりました。わざわざプログラムを書いていただいて有難うございました。
#1です。#2の補足について。
If stop_flag = False Then Exit Do ではなく
If stop_flag = true Then Exit Do でなければ...
念のため、DO の前の行に stop_flag = False をいれておいてください。
この回答への補足
回答有難うございます。とりあえずLoopから出ることが出来ました。有難うございました。ただ、STOPButtonを押せば直ぐに止まらずにLoopから出ないと止まらないんですね・・。(考えてみれば当たり前ですが・・)押したら直ぐにLoopから出られる(Loopする数字が押した瞬間に止まる)ようになるにはどのようにしたらいいのでしょうか?すみませんがよろしくお願いします。
#2のtinu2000 です。
maruru01さん、そうでしたそうでした、DoEvents を忘れていました。
質問を見て、瞬間的なイメージは DoEvents はあったんですが、
書いている内に忘れてしまいました。(汗)
maruru01さん、ありがとうございました。
あれではストップボタンが割り込まないですね。
この回答への補足
続きです。すみませんよろしくお願いします。
No.3ベストアンサー10pt
こんにちは。maruru01です。
基本的には、No.2の方のように、フラグを立てる方法です。
ただ、ストップボタンをクリックする割り込み処理を入れるために、DoEventsを入れます。
No.2の方のを拝借して、
Private Sub Command1_Click() 'スタートボタン
ExitSw = 0
Do
DoEvents
・・・
If ExitSw = 1 Then Exit Do
・・・
Loop
・・・
End Sub
Private Sub Command2_Click() 'ストップボタン
ExitSw = 1
End Sub
この回答への補足
回答有難うございます。ただ全然初心者なのでまだ出来ません・・。tinu2000様の補足に抜けられないプログラムを出したのですが、わかりません。すみませんよろしくお願いします。
Private Sub Command1_Click() 'スタートボタン
ExitSw = 0
Do
・・・
If ExitSw = 1 Then Exit Do
・・・
Loop
・・・
End Sub
Private Sub Command2_Click() 'ストップボタン
ExitSw = 1
End Sub
他にも方法があると思うけど、こんなんでいいんでない?
この回答への補足
回答有難うございます。ただ・・どうしても抜けられません・・。全然初心者なのでまだわかりません。
Private Sub CommandButton1_Click()
Dim i As Integer, n As Integer, b As Integer, a As Integer
Do
a = 1
For i = 0 To 7
Range("a1") = a
For n = 0 To 500
DoEvents
Next n
a = a + 1
Next i
a = 2
For b = 0 To 7
Range("b1") = a
For n = 0 To 500
DoEvents
Next n
a = a * 2
Next b
If stop_flag = False Then Exit Do
Loop
End Sub
Private Sub CommandButton2_Click()
stop_flag = True
End Sub
7回まわってLOOPする形のものを中身を変えて出したのですが、どうしても止まりません・・。何がわるいのでしょうか?
- 最新から表示
- |
- 回答順に表示
- |
- ベストアンサーのみ表示











