- ベストアンサー
セル背景や文字を点滅させる方法
エクセルの関数や表作成、基本的な事は身につけることができ、次のステップに進もうと思い、マクロについて勉強したいと思い質問させていただきました。 今の目標としては、ある数値以下の時、またはそれ以上のときにセルを点滅、または文字を点滅させる方法などがありましたら教えて頂きたいです。条件付き書式でセル、またはフォント色を変えられても、点滅をさせる方法などは私には到底できる領域ではなく、マクロについても全く無知です。分かる方がいらしたらどうか教えてください。私のレベルはとりあえず基本的関数、マクロ以外の機能を理解できる程度です、尚プログラム言語については今から勉強という段階で全く分かりません。どうかこの程度のレベルの私ができる程度に説明して下さる方宜しくお願い致します。
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
#1 #3 です。 >マクロについて勉強したい... とのことでしたね。コメントを多く入れておきましたので、ご参考下さい。 また、さらに改造して、「A列にデータを入力すると」になっています。 【以下コード】 'API宣言---魔法の呪文みたいなもの Private Declare Sub Sleep Lib "KERNEL32.dll" _ (ByVal dwMilliseconds As Long) 'EXCEL既定のイベント Private Sub Worksheet_Change(ByVal Target As Range) 'セルが変化したら、以下のコードを実行 '変化のあったセルは Target であらわされる '変数の宣言 Dim i As Integer Dim ColorDat 'カラーインデックス定義 ColorDat = Array(15, 48, 16, 56, 16, 48, 15) 'エラートラップ On Error Resume Next '変化のあったセル=TargetがA列(列番号=1)であれば 'End If までの挟まれたコードを実行 If Target.Column = 1 Then 'そのセル背景色を With Target.Interior '配列ColorDatに書かれたデータ数だけ繰り返す For i = 0 To UBound(ColorDat) 'ColorDatのi番目のカラー番号でセル背景色を塗る .ColorIndex = ColorDat(i) 'API 30ミリ秒 Wait Sleep 30 Next i '最後にセルの背景色を解除 .ColorIndex = xlNone End With End If End Sub
その他の回答 (3)
- KenKen_SP
- ベストアンサー率62% (785/1258)
>私がマクロやVBAに興味を持ったきっかけでしたものでその方法を初めに知りたくて皆様にお願い致しました。 >点滅を速くできるのであればまさに私の探し求めてた事が実現できます。 では。 色の書き換えにWAIT処理を入れる必要があるのですが、EXCELのWAITは1秒単位でしかかけられません。 この場合、VBA初心者には敷居が高いのですが API を使います。とは言え簡単な部類です。 #2 macchan1 さんのコードを改造し、セルがフラッシュするように見せるものです。 Sleepのあとの数字で、スピードを調整します。 同じく、セルに10以下の数字が入力されるとイベント発生です。 頑張って下さいね(^^) 'API宣言 Private Declare Sub Sleep Lib "KERNEL32.dll" _ (ByVal dwMilliseconds As Long) Private Sub Worksheet_Change(ByVal Target As Range) Dim i As Integer Dim ColorDat If Target.Value < 10 Then 'カラーインデックス定義 ColorDat = Array(15, 48, 16, 56, 16, 48, 15) For i = 0 To UBound(ColorDat) Target.Interior.ColorIndex = ColorDat(i) Sleep 50 'API 50 msec Waitします Next i Target.Interior.ColorIndex = xlNone End If End Sub
お礼
何度もお手数かけて頂き本当にありがとうございます 。これが私のやりたいことでした!!先ほどから5時間くらいずっと実践して本当に僅かですができるようになりました。ですが皆様のレベルに到達するには ・・・と思うと高いハードルだ。と思いつつも 頑張ろうと思えます。これをもとにコードの詳細を調べさせて頂きたいと思います。完璧な回答の中で初心者の私が疑問に思うのは、関数のように特定のセル(D4,E4,F4に適用等)や条件付き書式のように (1~1000の間、1501以上の時のみ点滅等)できないのかが疑問です。今日から寝る間を惜しんで本やPCで調べたいと思います。もし分かるのでしたら時間がある時でいいので教えていただければ幸いです。本当にアドバイスや回答ありがとうございました。
- macchan1
- ベストアンサー率38% (52/136)
あまりお奨めできませんがマクロの勉強ということなので例を考えてみました。 例えばフォント色を変えるイベントマクロで入力した数字によって点滅のように見せることができます。 シート名を右クリックして「コードの表示」から以下のコードをコピーペーストしてみてください。 10未満の数を入力したときフォントが点滅しているように見えます。 Private Sub Worksheet_Change(ByVal Target As Range) Dim i As Integer If Target.Value < 10 Then For i = 1 To 5 Target.Font.ColorIndex = 2 Application.Wait Now() + TimeValue("00:00:01") Target.Font.ColorIndex = 0 Application.Wait Now() + TimeValue("00:00:01") Next End If End Sub
お礼
非常に勉強になります!!一つ一つの意味は理解できませんが、これを特定のセルに適用、背景色を点滅でき、点滅を速くできるのであればまさに私の探し求めてた事が実現できます。 もし、もしもう一度私の質問に貴重な時間を使って下さるのなら、コードの意味と上記に記載したようなことができるのか否かを教えていただければ光栄です。
- KenKen_SP
- ベストアンサー率62% (785/1258)
EXCELにはセル背景や文字を点滅させる方法はありません。 VBAで擬似的にはできないこともありませんが。 1. フラッシュの原理として A)セルの背景色書き換え B)文字色の書き換え のマクロを書く 2. Ontimeで数秒ごとにマクロ実行 と単純です。例えば、文字なら「黒」「白」を一定時間ごとに色を切り替えれば、点滅しているように見えます。 しかし、この場合常に数秒置きにマクロが実行されることになりますので、EXCELがまともに動作しなくなります。したがって、やめた方がよいでしょう。「目立たせたい」のであれば、「色使いやフォントの使い方によるデザイン」で勝負すべきです。 >マクロについて勉強したい... とのことですが、セルや文字の点滅ではなく、別のテーマにした方が良いと正直思います。
お礼
アドバイスありがとうございます。私がマクロやVBAに興味を持ったきっかけでしたものでその方法を初めに知りたくて皆様にお願い致しました。 「デザインで勝負」とても参考になりました。 このアドバイスを機に向上していきたいと思います。 ありがとうございました。
お礼
凄い分かり易く、教科書を見ているようです。 先程までは到底分かりませんでしたが、説明を見ながらならば理解できる領域にまで来る事ができているようです。色々いじくることも勉強の一環だと思いますので、色々自分でもいじくってみたいと思います。 ですが、皆様の知識には本当に頭が下がります。 少しでも近づけたら何よりだと感じます。 とりあえずこれを基に("A7")に1から1000の間、1501以上にtargetを絞りたいと思います。本当にありがとうございました。