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

エクセルVBEモジュールにif then elseを使ってマクロを書きました。thenとelseの中間ぐらいでmsgbox”お知らせ”を書いて実行するとメッセージボックスは正しく表示します。しかしポインターがメッセージボックスウィンドウの外にあるときは砂時計が動き続け、メッセージボックスの上に置けば普通の矢印に変わります。砂時計を出さない方法はどうしたらよいのでしょうか。msgbox”お知らせ”の下行に続けてexit subまたはon error goto 0を書いてもやはり時計がでてしまいます。どうしたらよいのでしょうか。

A 回答 (3件)

コード実例が書いてなくて、情況が理解しづらく、言っていることがおかしいように思う。


挿入ー標準モジュールに(標準モジュールに入れてますか)
Sub test01()
If Cells(1, "A") = "1" Then
MsgBox "1です"
Else
MsgBox "1では在りません"
End If
End Sub
と入れてA1セルに1を入れて実行。
また2を入れて実行。
で質問と同じ現象になりますか?
質問者のコードはこれと似たようなコードですか。
そもそも質問をするのに、短いならばコードを挙げて質問するものですよ。
一瞬以上の砂時計が出るとは考えられない。
砂時計が出るのは、内部処理に時間がかかっているためで、
OSの仕組みに根ざしているので、出さないようにすると言う選択肢は、普通それだけを問題にされない。
ユーザー側で意識的に出すようにするのか下記コード。
他にカーソルポインターの形は、変えることが出来る。
http://support.microsoft.com/kb/408038/jaを参照。
時間がかかる処理をやってみると
Sub test02()
For i = 1 To 100000000
i = i + 1
Next i
MsgBox "終了"
End Sub
のようなものだと数秒間は砂時計が現れるとおもう。
ーーーー
他にマウスカーソルをエクセル画面内で変える
ub test02()
'Application.Cursor = xlWait '砂時計
'Application.Cursor = xlDefault
Application.Cursor = xlNorthwestArrow
'Application.Cursor = xlIBeam

For i = 1 To 100000000
i = i + 1
Next i
MsgBox "終了"
End Sub
の上の4行。しかしこれは処理中の砂時計と同類のことではない。
    • good
    • 0
この回答へのお礼

かなり長いマクロだったので全部読んでいただくのが悪い気がして簡単に書きすぎました。もう少し表現が上手になるよう努力します。
Application.Cursor = xlDefaultをメッセージの直前に挿入したら砂時計は出なくなり、無事次へ進めることができました。ありがとうございます。

お礼日時:2010/10/22 15:14

ANo.1です。

更に付け加えると、メッセージ表示の間、マクロは待機状態にあります。よって、「OK」ボタンをクリックした後、MsgBoxの次のステートメントが実行されます。
    • good
    • 0

メッセージボックスが表示されている間は、まだマクロ実行の途中にあります。

従って、砂時計が表示されます。「OK」ボタンをクリックしてマクロを終了するまで、砂時計は消えません。
    • good
    • 0

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