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

エクセル2000です。
ワークシートに配置したオートシェープ(「矢印」と名前を付けてあります。)をチカチカさせたいのです。

Sub マーク点滅()
Dim i As Integer
i = 0
Do
i = i + 1
Loop Until i = 3
Sheets("AAAA").Shapes("矢印").Visible = True
Sheets("AAAA").Shapes("矢印").Visible = False
End Sub

とやってみましたがぜんぜんだめでした。
いい方法はないでしょうか?

A 回答 (2件)

> Declare Sub Sleep Lib "kernel32" _


> (ByVal dwMilliseconds As Long)
> って何でしょうか?

これはkernel32ダイナミックリンクライブラリにある"SLEEP" WindowsAPI関数を使うための記述です。VBAだけでは1秒以下の処理停止ができないのでAPI関数を呼び出しています。以外と高度なテクですが、便利です。ちなみに、1000が1秒に相当しますが、微小時間はあまり正確ではありません。

> DoEventsを入れないと点滅しませんでしたがなぜでしょ> うか?
DoEvents は、OS に一時的に制御を渡すコマンドです。ここではループ中にオブジェクトを再描画させるために使っていますが、他のコードに強制的に処理を移すときに使います。
    • good
    • 0
この回答へのお礼

ご丁寧にありがとうございました。
たすかりました。
これからもよろしくご指導ください。

お礼日時:2003/12/29 09:59

動作を繰り返す場合、そのコードをループ内に書かなければいけません。

また、処理後にオブジェクトを表示をさせるために
DoEvents
を入れてやるといいでしょう。
以下に例を示します。必ず標準モジュールに記述してください。

Declare Sub Sleep Lib "kernel32" _
 (ByVal dwMilliseconds As Long)

Sub マーク点滅()
Dim i As Integer
Dim x As Integer '点滅回数
Dim slp As Integer '点滅速さ
x = 10
slp = 200
For i = 1 To x
 Sleep slp
 Sheets("AAAA").Shapes("矢印").Visible = False
 DoEvents
 Sleep slp
 Sheets("AAAA").Shapes("矢印").Visible = True
 DoEvents
Next i
End Sub
    • good
    • 0
この回答へのお礼

ありがとうございました!

ところで
Declare Sub Sleep Lib "kernel32" _
 (ByVal dwMilliseconds As Long)
って何でしょうか?

DoEventsを入れないと点滅しませんでしたがなぜでしょうか?

お礼日時:2003/12/25 15:26

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

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


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