
No.2ベストアンサー
- 回答日時:
No.3
- 回答日時:
VBEで標準モジュールを挿入して、下記のコードをコピペしてください。
Declare PtrSafe Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Integer)
Option Explicit
Sub 一定時間間隔でセルを点滅()
Dim n As Long
Dim buf As Variant
Dim 秒 As Long
Cells(1, 1).Select
Cells(1, 2).Interior.ColorIndex = xlNone
Cells(3, 2) = "このセルをクリックすると終了します。"
Do
'「秒」が指定した値になるまで待機
Do
'秒を取得
buf = Split(Now(), ":")
秒 = buf(2)
Call 応答
Sleep 100
If 秒 = 55 Then
Exit Do
End If
Loop
'点滅
For n = 1 To 2
Cells(1, 2).Interior.Color = RGB(255, 0, 0)
Sleep 500
Call 応答
Cells(1, 2).Interior.ColorIndex = xlNone
Sleep 500
Call 応答
Next
Loop
End Sub
Sub 応答()
Cells(2, 2) = "現在の時刻:" & Now()
DoEvents
If ActiveCell = "このセルをクリックすると終了します。" Then
Cells(1, 1).Select
Cells(1, 2).Interior.ColorIndex = xlNone
Cells(2, 2) = ""
Cells(3, 2) = ""
End
End If
End Sub
このマクロを実行するには、
プロシージャ「一定時間間隔でセルを点滅」を実行してください。
マクロの実行方法は何通りもありますが、
例えば、プロシージャ「一定時間間隔でセルを点滅」の中にカーソルがある状態で[F5]キーを押すと実行できます。
このマクロを停止させるには、
実行後にC3セル(「このセルをクリックすると終了します。」と表示されているセル)をクリックしてください。
一番上の行から順番に解説します。
■Declare PtrSafe Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Integer)
Windows API の Sleep 関数の使用を宣言します。もしここでエラーが発生するなら、「PtrSafe」を消してください。
■Option Explicit
これを書くと、宣言されていない変数がコード中にある場合、エラーが発生し、それに気づくことができるというものです。プログラムを使用する側にとっては、まあ、どうでもいいです。
■Sub 一定時間間隔でセルを点滅()
プロシージャ「一定時間間隔でセルを点滅」の開始です。
■Dim n As Long
「n」という名前の Long 型の変数を宣言します。n には整数を代入できます。
■Dim buf As Variant
「buf」という名前の Variant 型の変数を宣言します。buf には何でも代入できます。
■Dim 秒 As Long
「秒」という名前の Long 型の変数を宣言します。秒 には整数を代入できます。
■Cells(1, 1).Select
1行1列目のセルを選択します。
■Cells(1, 2).Interior.ColorIndex = xlNone
1行2列目のセルの色を消します。
■Cells(3, 2) = "このセルをクリックすると終了します。"
3行2列目のセルに「このセルをクリックすると終了します。」と表示します。
■Do
ここから最後の Loop までの処理を繰り返し実行します。
■Do
ここから次の Loop までの処理を繰り返し実行します。
■buf = Split(Now(), ":")
Now 関数「Now()」は、現在時刻を教えてくれる関数です。
現在時刻が 2021年 12月 1日 08時 06分 32秒 だとしたら、
「Now()」は、文字列で「2021/12/01 8:06:32」を返します。
Split 関数は Now 関数が返した現在時刻を「:」で区切って仕分けたものを変数「buf」に入れます。
このとき、
buf(0) の値は「2021/12/01 8」
buf(1) の値は「06」
buf(2) の値は「32」
となります。
buf(0) と buf(1) は不要なので無視します。buf(2) の値を見れば、現在何「秒」なのかがわかります。
■秒 = buf(2)
buf(2) を変数「秒」に入れます。
現在、上記の時刻だとしたら、変数「秒」の値は 32 になります。
■Call 応答
プロシージャ「応答」の内容を実行します。
■Sleep 100
100 ミリ秒(= 0.1 秒)休止します。「今やっているゲームのタイミング用に」ということですので、Excel VBA の動作が CPU 使用率を独占すると良くないかもしれませんから、少しだけここで休むわけです。
ただし、このやり方だとセルが赤くなるタイミングに少し誤差が出てしまいます。もし、セルが赤くなるタイミングの精度を求めるなら、ここの「100」という数をもっと小さい数に変更してください。
■If 秒 = 55 Then
現在時刻が 55 秒になったら、次の End IF までの処理を実行します。
■Exit Do
Do ~ Loop のループから抜け出し、次の Loop のひとつ下の行にワープします。
■End If
■Loop
■For n = 1 To 2
次の Next までの処理を 2回実行します。
■Cells(1, 2).Interior.Color = RGB(255, 0, 0)
1行2列目のセルの色を赤にします。
ちなみに、どうでもいい話ですが、RGB(255, 0, 0)の部分を
RGB(0, 255, 0) に変えると緑に
RGB(0, 0, 255) に変えると青になります。
■Sleep 500
500 ミリ秒(= 0.5 秒)休止します。
■Call 応答
プロシージャ「応答」の内容を実行します。
■Cells(1, 2).Interior.ColorIndex = xlNone
1行2列目のセルの色を消します。
■Sleep 500
500 ミリ秒(= 0.5 秒)休止します。
■Call 応答
プロシージャ「応答」の内容を実行します。
■Next
■Loop
■End Sub
プロシージャ「一定時間間隔でセルを点滅」を終了します。
とは言っても外側の Do ~ Loop に対する Exit Do (ループから抜け出す指示)は存在しませんので、「応答」プロシージャ内の「End」が実行されない限りは無限ループします。
なので、処理がこの「End Sub」に到達することはあり得ません。
■Sub 応答()
プロシージャ「応答」の開始です。
■Cells(2, 2) = "現在の時刻:" & Now()
2行2列目のセルに「Now()」が返した値を表示します。
■DoEvents
ggってください。
■If ActiveCell = "このセルをクリックすると終了します。" Then
選択したセルに、「このセルをクリックすると終了します。」と書かれているとき、End IF までの処理を実行します。
■Cells(1, 1).Select
1行1列目のセルを選択します。
■Cells(1, 2).Interior.ColorIndex = xlNone
1行2列目のセルの色を消します。
■Cells(2, 2) = ""
2行2列目のセルを空欄にします。
■Cells(3, 2) = ""
3行2列目のセルを空欄にします。
■End
マクロを強制的かつ完全に停止させます。
これは「Exit Do」とか「Exit Sub」とは違って、このプロシージャが別のプロシージャから呼び出されていたり、処理がループの途中だったとしても停止できます。
■End If
■End Sub
プロシージャ「応答」を終了します。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- C言語・C++・C# C言語 ① 5秒間 1秒間隔で点滅を繰り返す ② 3秒間 0.5秒間隔で点滅を繰り返す ①→②→①→ 5 2022/05/03 23:37
- C言語・C++・C# C言語 コードを書いたのですが上手く実行出来なかったです。どこが間違ってますか? 【作成したいもの】 1 2022/05/04 11:36
- その他(教育・科学・学問) A地点からB地点までの距離は16mで52秒で到着します。 その間30秒間隔でA地点からは製品が払い出 3 2023/08/19 11:19
- Excel(エクセル) エクセルVBAでセルに表示されているとおりの数値を取得したい(時間の計算結果) 1 2022/03/30 17:52
- Visual Basic(VBA) エクセル VBA 条件によるセル点滅 お詳しい方 ご教授をお願いします。 Excelファイルにて 現 1 2022/11/03 15:53
- Visual Basic(VBA) エクセルマクロでアニメを作る方法を教えてください。 1 2023/02/07 14:27
- 宇宙科学・天文学・天気 7月2日夜、城ヶ島へ星空撮影しに行きました。 今回は、明るいレンズだけ借りて、赤道儀を使わず撮影し、 1 2022/07/03 23:34
- Firefox(ファイヤーフォックス) Firefox bookmarkの検索BOXでのインクリメンタルサーチを止めたい 5 2022/06/29 12:15
- 数学 高校物理 相対速度の式について 5 2022/05/11 00:14
- UNIX・Linux サーバー間のデータコピー(データ形式とデーターフォーマットの変換あり。一定間隔で処理) 2 2023/08/22 22:15
このQ&Aを見た人はこんなQ&Aも見ています
-
Excelで文字の点滅方法
Excel(エクセル)
-
セル背景や文字を点滅させる方法
Word(ワード)
-
エクセルのセルや文字を点滅表示できますか?
Excel(エクセル)
-
-
4
エクセルVBA 指定のセル背景色を点滅させたい
Excel(エクセル)
-
5
エクセルで、セル内の文字を点滅させるには。
その他(Microsoft Office)
-
6
エクセルVBAでオートシェイプを点滅させたい。
Excel(エクセル)
-
7
文字の点滅はどうやるのですか?
Visual Basic(VBA)
-
8
エクセル VBA 条件によるセル点滅 お詳しい方 ご教授をお願いします。 Excelファイルにて 現
Visual Basic(VBA)
-
9
ラベルを表示したり非表示にしたりしたい
Visual Basic(VBA)
-
10
EXCEL VBA セルに既に入力されている文字に文字を追加する
Excel(エクセル)
-
11
Excel(エクセル) VBA プロシージャーをミリ秒で繰り返し実行する方法
Excel(エクセル)
-
12
ExcelVBAのユーザーフォームの中に線を引きたい
Visual Basic(VBA)
-
13
セルをフリッカーされる方法
Excel(エクセル)
-
14
エクセルで貼り付けたオブジェクトの画像をユーザーフォームのイメージコントロールで表示する方法
Excel(エクセル)
-
15
【Excel VBA】マクロでExcel自体を終了させたい
Excel(エクセル)
-
16
VBA(エクセル)で自動的にボタンをクリックさせるには
その他(プログラミング・Web制作)
-
17
数式による空白を無視して最終行を取得するマクロ
Excel(エクセル)
-
18
セルのブリンクと停止
Excel(エクセル)
-
19
メッセージボックスに表示する文字を大きくしたい
Excel(エクセル)
-
20
VBAで重複するデータがあれば1個だけ残して他の重複セルを"(空白)にしたいのですが
Excel(エクセル)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
EAのゲームで画面が点滅する
-
スマートキーの赤い点滅ランプ...
-
ダイアグとは・・・?
-
Excelで文字の点滅方法
-
FMVのディスプレイの横の鍵の点...
-
至急お願いします スマホを落と...
-
子供用デジタル時計設定
-
超高速点滅するホタル?
-
一定時間間隔でセルを点滅させたい
-
メールが届いた時にアイコンを...
-
PS3コントローラーが充電できな...
-
HOLDランプが点滅するのですが
-
FlexGridの選択されたセル内の...
-
ディスクのアクセスランプ
-
VIPERセキュリティーに関する質...
-
駐車中の車で、車内に赤いラン...
-
HID(ヘッドライト)の球切れ(寿...
-
ガラホの青い点滅は何が来てい...
-
sonyテレビの故障 スタンバイ/...
-
LANケーブルの接続部分が点滅し...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Excelで文字の点滅方法
-
スマートキーの赤い点滅ランプ...
-
EAのゲームで画面が点滅する
-
ダイアグとは・・・?
-
PS3コントローラーが充電できな...
-
至急お願いします スマホを落と...
-
PCXのスマートキーでエンジンを...
-
オーディオインターフェースのU...
-
一定時間間隔でセルを点滅させたい
-
UR22mk2がある日突然、白ランプ...
-
エクセルで、セル内の文字を点...
-
Audi TTの時計の合わせ方。
-
エクセルVBAでオートシェイ...
-
TEPRA Lite LR30 が壊れた?
-
時計 アルミフレーム インテリ...
-
子供用デジタル時計設定
-
黄色の点滅信号と赤の点滅信号...
-
LANケーブルの接続部分が点滅し...
-
メールが届いた時にアイコンを...
-
CBR954の時計
おすすめ情報