
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
エクセルVBAでオートシェイプを点滅させたい。
Excel(エクセル)
-
6
エクセルで、セル内の文字を点滅させるには。
その他(Microsoft Office)
-
7
エクセル VBA 条件によるセル点滅 お詳しい方 ご教授をお願いします。 Excelファイルにて 現
Visual Basic(VBA)
-
8
VBAで保存しないで閉じると空のBookが残る
Excel(エクセル)
-
9
ラベルを表示したり非表示にしたりしたい
Visual Basic(VBA)
-
10
文字の点滅はどうやるのですか?
Visual Basic(VBA)
-
11
VBA(エクセル)で自動的にボタンをクリックさせるには
その他(プログラミング・Web制作)
-
12
EXCEL VBA セルに既に入力されている文字に文字を追加する
Excel(エクセル)
-
13
Excel(エクセル) VBA プロシージャーをミリ秒で繰り返し実行する方法
Excel(エクセル)
-
14
ExcelVBAのユーザーフォームの中に線を引きたい
Visual Basic(VBA)
-
15
VBAでエクセルシートを更新(リフレッシュ)する方法を教えて下さい。
Excel(エクセル)
-
16
セルをフリッカーされる方法
Excel(エクセル)
-
17
【Excel VBA】マクロでExcel自体を終了させたい
Excel(エクセル)
-
18
エクセルのラベルの値(文字列)を垂直方向で中央揃えにするには?
Excel(エクセル)
-
19
エクセルで貼り付けたオブジェクトの画像をユーザーフォームのイメージコントロールで表示する方法
Excel(エクセル)
-
20
メッセージボックスに表示する文字を大きくしたい
Excel(エクセル)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Vba Array関数について教えてく...
-
【マクロ】シートの変数へ入れ...
-
【マクロ】並び替えの範囲が、...
-
エクセルのVBAコードと数式につ...
-
エクセルのマクロについて教え...
-
エクセルの改行について
-
【VBA】 結合セルに複数画像と...
-
vbsでのwebフォームへの入力制限?
-
算術演算子「¥」の意味について
-
【マクロ】売上一覧YYYYMMDDHHS...
-
【マクロ】開いているブックの...
-
Vba セルの4辺について罫線が有...
-
vb.net(vs2022)のtextboxのデザ...
-
ダブルクリックで貼り付けた画...
-
VBAの「To」という語句について
-
VBAでユーザーフォームを指定回...
-
VBAでCOPYを繰り返すと、処理が...
-
【マクロ】変数を使った、文字...
-
エクセルのVBAコードについて教...
-
ワードの図形にマクロを登録で...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Vba セルの4辺について罫線が有...
-
vbsでのwebフォームへの入力制限?
-
【ExcelVBA】5万行以上のデー...
-
【マクロ】売上一覧YYYYMMDDHHS...
-
【マクロ】開いているブックの...
-
【マクロ】並び替えの範囲が、...
-
エクセルの改行について
-
エクセルのマクロについて教え...
-
vb.net(vs2022)のtextboxのデザ...
-
VBAでCOPYを繰り返すと、処理が...
-
VBA ユーザーフォーム ボタンク...
-
エクセルのVBAコードと数式につ...
-
エクセルのVBAコードについて教...
-
[VB.net] ボタン(Flat)のEnable...
-
【マクロ】変数を使った、文字...
-
改行文字「vbCrLf」とは
-
質問58753 このコードでうまく...
-
【マクロ】シートの変数へ入れ...
-
ワードの図形にマクロを登録で...
-
算術演算子「¥」の意味について
おすすめ情報