Excel VBA質問箱 IV

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

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


13155 / 13646 ツリー ←次へ | 前へ→

【6704】無限ループ 03/7/26(土) 17:45 質問
【6706】Re:無限ループ ichinose 03/7/26(土) 18:54 回答
【6707】Re:無限ループ 03/7/26(土) 19:48 質問
【6708】Re:無限ループ ichinose 03/7/26(土) 20:53 発言
【6774】Re:無限ループ 03/8/3(日) 17:44 お礼

【6704】無限ループ
質問    - 03/7/26(土) 17:45 -

引用なし
パスワード
   無限ループ中にボタンを押すと止まるというコードを作成中なのですが
無限ループ中だと何もきかないんです。
どこかのサイトからEXCELをダウンロードした時そういうのがあったんですけど
パスワードかけられていてわからなかったんです。
誰かそういうコード知っている方がいれば教えてください。

【6706】Re:無限ループ
回答  ichinose  - 03/7/26(土) 18:54 -

引用なし
パスワード
   ▼正 さん:
こんばんは。
>無限ループ中にボタンを押すと止まるというコードを作成中なのですが
>無限ループ中だと何もきかないんです。
ということは、ご自分でコードを作ったと言う事ですね?
そのコードも見せて頂ければよかったのですが・・・。

シートにコマンドボタン(コントロールツールボックスのコマンドボタン)を
ふたつ配置した例です。
Commandbutton1(無限ループを作る)
Commandbutton2(↑の無限ループを止める)

上記のコマンドボタンを配置したシートのモジュールに
'=====================================================
private 無限ループフラグ As Boolean
'===================================
Private Sub CommandButton1_Click()
  無限ループフラグ = True
  i = 0
  Do While 無限ループフラグ = True
   Cells(1, 1).Value = i
   i = i + 1
   DoEvents
   Loop
End Sub
'===================================
Private Sub CommandButton2_Click()
  無限ループフラグ = False
End Sub

試してみて下さい。

【6707】Re:無限ループ
質問    - 03/7/26(土) 19:48 -

引用なし
パスワード
   ▼ichinose さん:
回答ありがとうございました
下のを今つなげて作ったのですが、初心者でかなり雑ですいません。
CommandButton1(Loop用ボタン)
CommandButton2(Loopを止めるボタン)  
と、したんですがCommandButton2をクリックしても止まってくれません。
連打すると止まるようなのですが、それが普通なのですか。


'------------------------------------------
Option Explicit
Private 無限ループフラグ As Boolean
'------------------------------------------
Sub sel(Mysel As Variant)
Dim ABC As Variant
Dim ABCD As Variant
Dim AB As Variant
Dim A As Variant
For ABC = 1 To 4
 ActiveCell.Offset(0, 1).Select
Next ABC
For ABCD = 1 To 5
 ActiveCell.Offset(1, 0).Select
Next ABCD
For AB = 1 To 4
ActiveCell.Offset(0, -1).Select
Next AB
For A = 1 To 5
 ActiveCell.Offset(-1, 0).Select
Next A
End Sub
'------------------------------------------
Private Sub CommandButton1_Click()
無限ループフラグ = True
Range("C2").Select
Do While 無限ループフラグ = True
Call sel(1)
DoEvents
Loop
End Sub
'------------------------------------------
Private Sub CommandButton2_Click()
無限ループフラグ = False
End Sub

【6708】Re:無限ループ
発言  ichinose  - 03/7/26(土) 20:53 -

引用なし
パスワード
   ▼正 さん:
>下のを今つなげて作ったのですが、初心者でかなり雑ですいません。
>CommandButton1(Loop用ボタン)
>CommandButton2(Loopを止めるボタン)  
>と、したんですがCommandButton2をクリックしても止まってくれません。
>連打すると止まるようなのですが、それが普通なのですか。
同じシートにコントロールを配置してしまうと今回のロジックに関しては
タイミングが影響してしまいますね(Selectが影響していると思いますが)
ユーザーフォーム(モーダレス表示で)に同じようにボタンを配置するとかなりブレーキが利きました。代用できませんか?

【6774】Re:無限ループ
お礼    - 03/8/3(日) 17:44 -

引用なし
パスワード
   ichinoseさんありがとうございました。
無事解決しました。

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