Loopで処理を回しています。処理件数が多く、処理の途中で一時停止させ、DataGridViewに表示されている処理結果を目で確認ないしマウスでコピーしてから、処理を再開ないしキャンセルして終了させる仕様を作成中です。
MessageBoxを使用すれば、Loopは一時停止出来たのですが、MessageBoxだとDataGridView上の処理結果をマウスでコピーなど出来ません。
そこで、MessageBoxを使用せずに、以下のコマンドを書いてみたのですが、最初のStopFlag=Trueが効くだけで次のコマンドは一瞬で処理されLoopが続いてしまいます。いかにすればLoopを一時停止できるか教えてください。
<変数宣言>
Public StopFlag As Boolean
Public CancelFlag As Boolean
<前処理>
TextBox1.Text = "処理待ち" 'テキストボックスに処理ステータスを表しています。
TextBox1.Refresh()
<処理>
Do
Me.Cursor = Cursors.WaitCursor '砂時計開始
TextBox1.Text = "処理中" ’ステータスを処理中として表示
TextBox1.Refresh()
~
Application.DoEvents() 'ストップボタンを押下したらここでDoEventsさせます。
If StopFlag = True Then ’ここでLoopを一時停止させておきたいのです。
Me.Cursor = Cursors.Default '一旦砂時計を止めます
TextBox1.Text = "処理一時停止"
TextBox1.Refresh()
If StopFlag = False Then ’再開ボタンが押下されたらここで再開させたい。
TextBox1.Text = "処理中" ’処理中と表示させます
TextBox1.Refresh()
Me.Cursor = Cursors.WaitCursor '砂時計再開です
ElseIf CancelFlag = True Then ’キャンセルボタンが押下されれば、処理はLoopを抜けます。
TextBox1.Text = "キャンセル"
TextBox1.Refresh()
Exit Do
End If
Loop
'----------ストップボタン----------
Private Sub Button2_Click~
StopFlag = True
End Sub
'----------再開ボタン----------
Private Sub Button3_Click~
StopFlag = False
End Sub
'----------キャンセルボタン----------
Private Sub Button4_Click~
CancelFlag = True
End Sub
この質問に補足する
No.2ベストアンサー
- 回答日時:
ありがとうございました。
掲載されていたIdleというわけにはいきませんでしたが、
If StopFlag = True Then
の後、StopFlag=FalseになるまでLoopというコマンドにしました。
また掲載されていた、Button1.Enabled = Falseなど役立ちました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
-
都道府県穴埋めゲーム
都道府県の名前を1人1つずつ投稿してください。全ての都道府県が出たら締め切ります!
-
フォロワー20万人のアカウントであなたのあるあるを披露してみませんか?
あなたが普段思っている「これまだ誰も言ってなかったけど共感されるだろうな」というあるあるを教えてください
-
映画のエンドロール観る派?観ない派?
映画が終わった後、すぐに席を立って帰る方もちらほら見かけます。皆さんはエンドロールの最後まで観ていきますか?
-
海外旅行から帰ってきたら、まず何を食べる?
帰国して1番食べたくなるもの、食べたくなるだろうなと思うもの、皆さんはありますか?
-
天使と悪魔選手権
悪魔がこんなささやきをしていたら、天使のあなたはなんと言って止めますか?
-
VBAでの一時停止と再開の方法
その他(プログラミング・Web制作)
-
VBAで一時中断したプログラムの再開をさせたい
Visual Basic(VBA)
-
処理の途中で停止させ、再開させたいです(VBA)
その他(データベース)
-
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・人生のプチ美学を教えてください!!
- ・10秒目をつむったら…
- ・あなたの習慣について教えてください!!
- ・牛、豚、鶏、どれか一つ食べられなくなるとしたら?
- ・【大喜利】【投稿~9/18】 おとぎ話『桃太郎』の知られざるエピソード
- ・街中で見かけて「グッときた人」の思い出
- ・「一気に最後まで読んだ」本、教えて下さい!
- ・幼稚園時代「何組」でしたか?
- ・激凹みから立ち直る方法
- ・1つだけ過去を変えられるとしたら?
- ・【あるあるbot連動企画】あるあるbotに投稿したけど採用されなかったあるある募集
- ・【あるあるbot連動企画】フォロワー20万人のアカウントであなたのあるあるを披露してみませんか?
- ・映画のエンドロール観る派?観ない派?
- ・海外旅行から帰ってきたら、まず何を食べる?
- ・誕生日にもらった意外なもの
- ・天使と悪魔選手権
- ・ちょっと先の未来クイズ第2問
- ・【大喜利】【投稿~9/7】 ロボットの住む世界で流行ってる罰ゲームとは?
- ・推しミネラルウォーターはありますか?
- ・都道府県穴埋めゲーム
- ・この人頭いいなと思ったエピソード
- ・準・究極の選択
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
VBSの処理中一旦処理を止めて再...
-
VBSで応答不要のメッセージボッ...
-
VBA kernel32 の意味
-
HTA(HTMLアプリケーション)にて...
-
VBA、UserFormを前面に出力して...
-
”お待ち下さい”が表示できない。
-
ACCESS側からEXCELの書式を設定...
-
vb.netでバッチ処理
-
ASP.NETでのメッセージ画面を出...
-
OSでの動作スピードの違い
-
VB.NETで数秒間msgboxの...
-
エクセルが勝手に立ち上がる
-
【C#】 あるイベントから別イ...
-
WEB上にボタンが押せない
-
DoEvents
-
VB Loopを一時停止し再開あるい...
-
エクセルVBAでクリップボード内...
-
シャットダウン時のExcel強制終...
-
Application.ScreenUpdating=Fa...
-
VBA メッセージボックスを自動...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
VBSの処理中一旦処理を止めて再...
-
メッセージボックスのボタン名変更
-
ACCESS側からEXCELの書式を設定...
-
VBA メッセージボックスを自動...
-
VBA kernel32 の意味
-
Application.ScreenUpdating=Fa...
-
VBA、UserFormを前面に出力して...
-
Excel VBA で処理中断(DoEvents...
-
エクセルVBAでクリップボード内...
-
VBSで応答不要のメッセージボッ...
-
Excel VBA 自動的に閉じるMsgBox
-
VCでウエイトをミリ秒でかけ...
-
キーボード入力、マウス操作を...
-
C#で処理中画面を表示したい。
-
【C#】 あるイベントから別イ...
-
マウスのクリックを無視したい
-
【MFC】イベントの無効化について
-
Excelのワークシートに行を挿入...
-
アクセスでのキー送信について
-
シャットダウン時のExcel強制終...
おすすめ情報