アプリ版:「スタンプのみでお礼する」機能のリリースについて

https://koukimra.com/archives/1866

上記を参考に、図形を使ってのマクロ処理中のメッセージを表示したいと考えています。

コード内に

If MsgBox("実行します。よろしいですか?", vbOKCancel) = vbOK Then

Worksheets(1).Shapes("macro_msg2").Visible = True
Application.Wait Now + TimeValue("00:00:01")

★処理コードを記載★

Worksheets(1).Shapes("macro_msg2").Visible = False

(☆下記画面処理コード挿入)


MsgBox "作業が終了しました。"

Else
Exit Sub

End If

このように記載をしています。

ステップインでの処理を確認する際はmacro_msg2の図形がきちんと表示されますが、
通常処理を行うと、図形が表示されないままMsgboxの処理にたどり着きます。

1秒の待ち時間を5秒としても同様です。

処理に当たり、画面のちらつき防止等で
Application.EnableEvents = False
Application.ScreenUpdating = False
Application.DisplayAlerts = False


こちらを上記処理の☆で入れていますが、図形の表示とこれらの有無は関係なさそうです。
処理速度が速すぎるための結果なのか、判断がつきません。
どこが原因でしょうか?
詳しい方、教えてください。

A 回答 (1件)

こんばんは



Shapeが表示されないのは、画面が更新されないからでしょう。

>Worksheets(1).Shapes("macro_msg2").Visible = True
の直後に
Application.ScreenUpdating = True
DoEvents

を入れてみてください。
(DoEvents なしでもOKと思いますが、念のため)
    • good
    • 0
この回答へのお礼

回答ありがとうございます。
2つのシートのうち、1つは上記のDoEventsを使うことでうまくいきました。

もう一つのシートは更新されずに表示されません。
DoEventsの後に
Msgboxで適当な文言や処理を入れると、きちんと表示されますが…

お礼日時:2023/08/05 09:50

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています


このQ&Aを見た人がよく見るQ&A