[[20211126211205]] 『乱数作成マクロのON-OFFボタン』(誠一) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]

 

『乱数作成マクロのON-OFFボタン』(誠一)

Private Sub CommandButton1_Click()

     Dim i As Long
    Dim j As Long
    For j = 1 To 300
    Cells(15, 7).Value = Int(1000 * Rnd(1)) + 1
    Cells(15, 10).Value = Int(10000 * Rnd(1)) + 1
        For i = 1 To 10
            Cells(i, 5).Value = Int(1000 * Rnd(1)) + 1

        DoEvents
        If StopFlag = True Then
            If MsgBox("中断しますか?", vbQuestion + vbYesNo) = vbYes Then
                Exit For

            Else
                StopFlag = False

            End If
        End If
      Next i
    Next j

End Sub
vbYes(はい)のボタンをクリックしてもキッチリ止まりません

 DoEvents
        If StopFlag = True Then
            If MsgBox("中断しますか?", vbQuestion + vbYesNo) = vbYes Then
                Exit For
の挿入位置を教えてください。

< 使用 Excel:Excel2019、使用 OS:Windows10 >


>キッチリ止まりません

セルの書き込みより描写の方が遅いですから
あきらめるか書き込みを遅くするとか。
(ボタンが有効) 2021/11/26(金) 21:38


フォームボタンの反応が遅いせいだと思う。
同じようなものを昔作って、うまくいかんかったのを思いだした。

MsgBox("中断しますか?
の意味がよく解らなかったけど。

ボタンはやめて
Shift キーで…

標準モジュールの1番上
Declare Function GetAsyncKeyState Lib "User32.dll" (ByVal vKey As Long) As Long

下は、あったとこ

 Private Sub CommandButton1_Click()
     Dim i As Long
    Dim j As Long
    For j = 1 To 300
    Cells(15, 7).Value = Int(1000 * Rnd(1)) + 1
    Cells(15, 10).Value = Int(10000 * Rnd(1)) + 1
        For i = 1 To 10
            Cells(i, 5).Value = Int(1000 * Rnd(1)) + 1
            DoEvents

            If GetAsyncKeyState(16) <> 0 Then
              If MsgBox("中断しますか?", vbQuestion + vbYesNo) = vbYes Then
                 Exit For
              End If
           End If
      Next i
    Next j
 End Sub

(ボタンが有効) 2021/11/26(金) 21:58


 >vbYes(はい)のボタンをクリックしてもキッチリ止まりません
 お試し下さい。

 Option Explicit
 Dim StopFlag As Boolean
 Private Sub CommandButton1_Click()
    Dim i As Long
    Dim j As Long
    For j = 1 To 300
    Cells(15, 7).Value = Int(1000 * Rnd(1)) + 1
    Cells(15, 10).Value = Int(10000 * Rnd(1)) + 1
        For i = 1 To 10
            Cells(i, 5).Value = Int(1000 * Rnd(1)) + 1
        DoEvents
        If StopFlag = True Then
            If MsgBox("中断しますか?", vbQuestion + vbYesNo) = vbYes Then
                StopFlag = False
                Exit Sub
            Else
                StopFlag = False
            End If
        End If
      Next i
    Next j
 End Sub
 Private Sub CommandButton2_Click()
    StopFlag = True
 End Sub

(ピンク) 2021/11/26(金) 23:33


コメント返信:

[ 一覧(最新更新順) ]


YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki. Modified by kazu.