質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.31%
VBA

VBAはオブジェクト指向プログラミング言語のひとつで、マクロを作成によりExcelなどのOffice業務を自動化することができます。

Q&A

解決済

2回答

14875閲覧

VBA 長時間の処理中にボタンをクリックするのを無効化したい

Taffy

総合スコア33

VBA

VBAはオブジェクト指向プログラミング言語のひとつで、マクロを作成によりExcelなどのOffice業務を自動化することができます。

0グッド

0クリップ

投稿2019/06/27 06:02

Excel 2010を使用しています。

シート上にボタンを配置し、ボタンクリック時に時間のかかる処理を実施しています。

VBA

1Sub ボタン1_Click() 2 ' 二重起動防止策:既に実行中の場合は処理中止 3 If blnJikko = True Then 4 Exit Sub 5 End If 6 7 ' 処理開始時にフラグを立てる 8 blnJikko = True 9 10 ' 時間のかかる処理 11 XXXXXX 12 13 ' 処理を抜ける前にフラグを落とす 14 blnJikko = False 15End Sub

しかし、この方法では時間のかかる処理中に再度ボタンをクリックすると、
処理終了後に再度ボタン1_Click関数が走ってしまいます。

これを防止する方法について教えていただけないでしょうか?

ちなみに、このコードは以下のサイトを参考にしてかきました。
https://teratail.com/questions/93926

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

手元にあるのが2010なので2010の回答ですが、以下の通り。
https://support.microsoft.com/ja-jp/help/2394653

しかしわざわざenable=falseにしなくてもVBAの動作中(処理中)は次の動作させられなかったので自分はこの記述は使ってないんですが

なんだ、聞きたい事と質問文が全然違っただけか

投稿2019/06/27 06:24

編集2019/06/27 06:41
hentaiman

総合スコア6428

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

ベストアンサー

処理中のフラグを用意しといて、そのフラグが立ってるときはボタンの処理をスルーするようにすればいいのでは


って、メッセージが残ってるということなのね。
なら、
処理中のフラグをリセットする前に、DoEvents関数を実行すればいいかと。

' 処理を抜ける前にフラグを落とす

DoEvents()
blnJikko = False
End Sub

投稿2019/06/27 06:06

編集2019/06/27 06:27
y_waiwai

総合スコア88163

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

Taffy

2019/06/27 06:27

処理中のフラグ、という目的でblnJikkoフラグを用意したのですが、 フラグの使い方が違うのでしょうか?
y_waiwai

2019/06/27 06:28

追記しました。フラグはその意味であってます
y_waiwai

2019/06/27 06:53

時間のかかる処理内ではボタンのイベントが処理されないので、それが終わってから処理に回され、ボタンクリックが実行されてしまうんで、フラグをリセットする前に処理させてやろう、ということです。 まあ、リンク先にも書いてありますが、多用するとバグのもとになりますんで注意ですね
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.31%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問