• ベストアンサー

セル背景や文字を点滅させる方法

エクセルの関数や表作成、基本的な事は身につけることができ、次のステップに進もうと思い、マクロについて勉強したいと思い質問させていただきました。 今の目標としては、ある数値以下の時、またはそれ以上のときにセルを点滅、または文字を点滅させる方法などがありましたら教えて頂きたいです。条件付き書式でセル、またはフォント色を変えられても、点滅をさせる方法などは私には到底できる領域ではなく、マクロについても全く無知です。分かる方がいらしたらどうか教えてください。私のレベルはとりあえず基本的関数、マクロ以外の機能を理解できる程度です、尚プログラム言語については今から勉強という段階で全く分かりません。どうかこの程度のレベルの私ができる程度に説明して下さる方宜しくお願い致します。

質問者が選んだベストアンサー

  • ベストアンサー
  • KenKen_SP
  • ベストアンサー率62% (785/1258)
回答No.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

0slowlykick0
質問者

お礼

凄い分かり易く、教科書を見ているようです。 先程までは到底分かりませんでしたが、説明を見ながらならば理解できる領域にまで来る事ができているようです。色々いじくることも勉強の一環だと思いますので、色々自分でもいじくってみたいと思います。 ですが、皆様の知識には本当に頭が下がります。 少しでも近づけたら何よりだと感じます。 とりあえずこれを基に("A7")に1から1000の間、1501以上にtargetを絞りたいと思います。本当にありがとうございました。

その他の回答 (3)

  • KenKen_SP
  • ベストアンサー率62% (785/1258)
回答No.3

>私がマクロや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

0slowlykick0
質問者

お礼

何度もお手数かけて頂き本当にありがとうございます 。これが私のやりたいことでした!!先ほどから5時間くらいずっと実践して本当に僅かですができるようになりました。ですが皆様のレベルに到達するには ・・・と思うと高いハードルだ。と思いつつも 頑張ろうと思えます。これをもとにコードの詳細を調べさせて頂きたいと思います。完璧な回答の中で初心者の私が疑問に思うのは、関数のように特定のセル(D4,E4,F4に適用等)や条件付き書式のように (1~1000の間、1501以上の時のみ点滅等)できないのかが疑問です。今日から寝る間を惜しんで本やPCで調べたいと思います。もし分かるのでしたら時間がある時でいいので教えていただければ幸いです。本当にアドバイスや回答ありがとうございました。

  • macchan1
  • ベストアンサー率38% (52/136)
回答No.2

あまりお奨めできませんがマクロの勉強ということなので例を考えてみました。 例えばフォント色を変えるイベントマクロで入力した数字によって点滅のように見せることができます。 シート名を右クリックして「コードの表示」から以下のコードをコピーペーストしてみてください。 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

0slowlykick0
質問者

お礼

非常に勉強になります!!一つ一つの意味は理解できませんが、これを特定のセルに適用、背景色を点滅でき、点滅を速くできるのであればまさに私の探し求めてた事が実現できます。 もし、もしもう一度私の質問に貴重な時間を使って下さるのなら、コードの意味と上記に記載したようなことができるのか否かを教えていただければ光栄です。

  • KenKen_SP
  • ベストアンサー率62% (785/1258)
回答No.1

EXCELにはセル背景や文字を点滅させる方法はありません。 VBAで擬似的にはできないこともありませんが。 1. フラッシュの原理として   A)セルの背景色書き換え   B)文字色の書き換え   のマクロを書く 2. Ontimeで数秒ごとにマクロ実行 と単純です。例えば、文字なら「黒」「白」を一定時間ごとに色を切り替えれば、点滅しているように見えます。 しかし、この場合常に数秒置きにマクロが実行されることになりますので、EXCELがまともに動作しなくなります。したがって、やめた方がよいでしょう。「目立たせたい」のであれば、「色使いやフォントの使い方によるデザイン」で勝負すべきです。 >マクロについて勉強したい... とのことですが、セルや文字の点滅ではなく、別のテーマにした方が良いと正直思います。

0slowlykick0
質問者

お礼

アドバイスありがとうございます。私がマクロやVBAに興味を持ったきっかけでしたものでその方法を初めに知りたくて皆様にお願い致しました。 「デザインで勝負」とても参考になりました。 このアドバイスを機に向上していきたいと思います。 ありがとうございました。

関連するQ&A

  • 指定の文字(記号)が入っているセルを点滅させる

    現在 下のマクロを使い指定のセルの文字をエクセルが 開いたとき点滅させています(皆さんからのもらいものですが) これを 指定された文字(記号)たとえば ” ! ” が入って いる セルのみを 点滅させたいのですが 列は一定です この場合は、R列です 指定の文字が入ったセルを点滅させるでもOKです マクロはちょこっとかじるぐらいしかわかりませんが よろしくお願いします。 Sub Auto_Open() Dim i As Long For i = 1 To 10 If Range("R33,R34").Font.Color = vbRed Then Range("R33,R34").Font.Color = vbBlack Else Range("R33,R34").Font.Color = vbRed End If Application.Wait Time + TimeValue("00:00:01") Next i End Sub

  • エクセルで背景の色を点滅させる方法について

    エクセル2013で作成した表の数値をある条件の元でセルの背景の色を点滅させる方法を教えてください。 条件  下記条件の元でカーソルの背景の色を点滅させる。     データ範囲は C3~G14     0~500までは青の点滅     501~750までは緑の点滅     751~1000までは黄色の点滅     1000以上は赤の点滅     合計の欄は点滅対象外とする。     ※色付けは条件付き書式設定による色付けとフォントの塗りつぶしと2通りあります。     方法が違うなら別々に教えてください。      

  • FlexGridのセル内文字を点滅させる方法

    VC++2005のMFC環境でFlexGridを使用しています。 SetTextMatrix関数にて、セル内に挿入した文字に対し、 点滅させ表示したいのですが、 何か良い方法などありましたら、ご教示お願い致します。

  • エクセルでセルの色を点滅させる方法について

    エクセル2013で作成した表の数値をある条件の元でセルの背景の色を点滅させる方法を教えてください。 条件  下記条件の元でカーソルの背景の色を点滅させる。     データ範囲は C4~F12     VBAでの使用でよいです。 空白は無色 0~99までは緑の点滅 100~199までは青の点滅 200~299までは黄色の点滅 300以上は赤の点滅 合計の欄は点滅対象外とする。 ※色付けは条件付き書式設定による色付けとフォントの塗りつぶしと2通りあります。 方法が違うなら別々に教えてください。

  • Excelで文字の点滅方法

    Excelでセル内の文字を点滅する方法を教えてください。 ヘルプや書籍で検索したのですが分かりませんでした。 できましたら、マクロを使わずにしたいのですが、無ければマクロでも可です。 宜しくお願いします。 使用しているVersionは"2000"です。

  • エクセルで、フォントのポイント数を変える方法?

    大変難しい課題で困っています。 エクセルで、セルに入力されている文章があったとして、その文章がセル内に一杯になったとき(つまり、セル内の文字数がある一定以上になったとき)、自動的にセルの書式のフォントのポイント数を1つ下げて全体を表示するような関数や条件付き書式はないでしょうか?(マクロを使えばできるそうですが、マクロを使わない方法)

  • 【Excel】セルの背景色、文字色のRGB値を求める方法

    Excel(関数orマクロ)でセルを参照して、 そのセルの背景色、文字色それぞれのRGB値(255,255,255 等)を自動取得することは可能でしょうか? 例えば、 A1セルの背景色RGB値をB1セルに。 A1セルの文字色RGB値をC1セルに、というイメージです。 ※バージョンはExcel2007です 宜しくお願い致します。 背景色、文字色のRGB値を求める方法

  • 選択したセルに特定の文字、自動的に他セルにコピペ

    選択したセル内((1))に、特定の文字が入力された場合、 他の場所の選択したセル((2))に、選択したセル((1))の中の一部を 他の場所の選択したセルに自動的にコピーされる方法が知りたいです。 (数字データだけではなく、書式・色も自動的にコピペされる) マクロor関数、どちらでも構いませんが、 私、マクロは全くの素人です。 上記の文が「選択、選択、、、と、意味不明かと思うのですが添付したデータ を見てください。 B11~B18の中に「予約」と入力された場合、そのセル(=B12)からH12までだけを セル(B1~B7)のセルの間のいずれかに自動表示させたいのです。 VLOOKUP関数でしょうか? それとも、マクロで自分でB1~B7を選択して、マクロの実行をさせる方法でしょうか?

  • Excelで色のついたセルの文字列を変更したいです。

    今、Excelを使って評価表を作っています。 その中で各項目の上位数値のセルに分かりやすく色をつけているんですが、 そのデータをHTML化するので、その項目を同じように強調したいのです。 分かりやすく示すと、 名前 *1 *2 *3 *4 *5 (回) Aさん 86 65 87 54 98 Bさん 77 55 54 87 88 Cさん 45 87 90 76 76  ・  ・  ・ こういうものであれば、各回のトップ10まで数値のセルに色をつけます。 そしてその色のついたセルに 『<font color=red>数値</font>』(数値には1回目であればAさんの86)としたいのです。 少しの量であれば手打ちで変更してもいいのですが、 今では色の付いた項目が結構な量なのでなかなか難しいものがあります。 そこで、何か関数や式を使って色の付いたセルがあれば一括して セルの書式を『数値』から『<font color=red>数値</font>』に変更する方法はないでしょうか? 分かりにくい説明で申し訳ありませんが、分かる方がいましたらお願いします。

  • FlexGridの選択されたセル内の文字色を変える方法

    VC++2005のMFC環境でFlexGridを使用しています。 以前、 http://oshiete1.goo.ne.jp/qa5081341.html にてセル内文字の点滅方法を質問させて頂き、 ご回答頂いた内容を元にSetCellForeColorを用いて、 文字色を切り替えることで、点滅させることが出来ました。 しかし、点滅しているセルを選択すると、 点滅表示から、通常のセル選択状態(文字は白、文字以外領域は青) となってしまい、点滅しません。 ※選択状態から非選択状態にすると、また点滅します。 選択状態でも、文字色が切り替わるようにするには、 どのような実装を入れることで実現させればよいのでしょうか? 解決法をご存知の方、ご教示お願い致します。

専門家に質問してみよう