Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


11642 / 13645 ツリー ←次へ | 前へ→

【14988】無限ループをクリックでとめたい かずや 04/6/12(土) 20:02 質問[未読]
【14989】Re:無限ループをクリックでとめたい ちゃっぴ 04/6/12(土) 20:14 回答[未読]
【14990】Re:無限ループをクリックでとめたい ichinose 04/6/12(土) 20:50 発言[未読]
【14991】Re:無限ループをクリックでとめたい かずや 04/6/12(土) 21:54 質問[未読]
【14993】Re:無限ループをクリックでとめたい ichinose 04/6/12(土) 22:43 発言[未読]
【14994】Re:無限ループをクリックでとめたい かずや 04/6/12(土) 23:24 お礼[未読]

【14988】無限ループをクリックでとめたい
質問  かずや  - 04/6/12(土) 20:02 -

引用なし
パスワード
   ユーザーフォームから
Aボタンをクリックすれば、あるマクロを延々と繰り返し
Bボタンをクリックすれば、それを終了する。
というのを作りたいのですが無限ループしか作れません。
クリックでのマクロの終了の仕方をどなたか教えてください。

【14989】Re:無限ループをクリックでとめたい
回答  ちゃっぴ  - 04/6/12(土) 20:14 -

引用なし
パスワード
   UserformをModelessで表示し、
そこにコマンドボタンを配置します。

コマンドボタンのクリックイベントで
グローバル変数でフラグを立てるように設定

ループ文の中にそのフラグが立ったら、
Exitするようにコードを記述すれば出来ます。

【14990】Re:無限ループをクリックでとめたい
発言  ichinose  - 04/6/12(土) 20:50 -

引用なし
パスワード
   ▼かずや さん、こんばんは。

>ユーザーフォームから
>Aボタンをクリックすれば、あるマクロを延々と繰り返し
>Bボタンをクリックすれば、それを終了する。
>というのを作りたいのですが無限ループしか作れません。
>クリックでのマクロの終了の仕方をどなたか教えてください。
一例ですが、
'==================================
Private loop_end As Boolean
'==================================
Private Sub CommandButton1_Click()
  loop_end = False
  Do While loop_end = False
   i = i + 1
   DoEvents 'これをループ中に入れておきます。これで・・、
'        別のボタンをクリック可能にしておきます
   Loop
End Sub
'==================================
Private Sub CommandButton2_Click()
  loop_end = True
End Sub

【14991】Re:無限ループをクリックでとめたい
質問  かずや  - 04/6/12(土) 21:54 -

引用なし
パスワード
   返信ありがとうございます。
DoEvents 初めて知りました。
そこまではわかったのですが、
Private loop_end As Booleanはどういう意味なのですか?
あと、これはどこにいれればいいのか教えてください
これがないせいなのか、クリックはできるんですが止められません

【14993】Re:無限ループをクリックでとめたい
発言  ichinose  - 04/6/12(土) 22:43 -

引用なし
パスワード
   ▼かずや さん:
>返信ありがとうございます。
>DoEvents 初めて知りました。
>そこまではわかったのですが、
>Private loop_end As Booleanはどういう意味なのですか?
まず、コマンドボタン(Commandbutoon1)をクリックしたときに実行されるコード
>'==================================
>Private loop_end As Boolean
' ↑これは、下のループコードを制御するフラグとして宣言した変数です。
' プロシジャーの外で宣言した変数は、基本的には値が保持されます。
' 今回の場合、これは、ユーザーフォームのモジュールですから、
' ユーザーフォームがメモリ上から削除されるまでは保持されます。 
' Commanbutton1をクリックすると、
' この値がFalseの間は、↓のコードDo while〜Loopの間のコードを繰り返します


>'==================================
>Private Sub CommandButton1_Click()
>  loop_end = False
>  Do While loop_end = False
>   i = i + 1
>   DoEvents 'これをループ中に入れておきます。これで・・、
>'        別のボタンをクリック可能にしておきます
>   Loop
>End Sub

'↓これが別のボタン(Commandbutton2)をクリックしたときに
' 実行されるコードです。変数loop_end にTrueを設定しているだけです。
'
'よって、この↓のコードが実行されると、loop_end は、Trueになり、
'↑のコードのループを抜けると言うロジックです。
'


>'==================================
>Private Sub CommandButton2_Click()
>  loop_end = True
>End Sub

>あと、これはどこにいれればいいのか教えてください
>これがないせいなのか、クリックはできるんですが止められません
最初の投稿のご質問は、ユーザーフォームのボタンのことですよね?
投稿コードは、全てユーザーフォームのモジュールに記述します。

こんな説明でわかっていただけますか?

【14994】Re:無限ループをクリックでとめたい
お礼  かずや  - 04/6/12(土) 23:24 -

引用なし
パスワード
   ちゃっぴさん、ichinoseさんありがとうございました
やっとできました。
ぜんぜん無知ですいません
ここはすごくいい人たちがいるのでまた来るかもしれません
そのときはよろしくお願いします^^
ありがとうございました

11642 / 13645 ツリー ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free