これまでで一番「情けなかったとき」はいつですか?

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

A 回答 (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
    • good
    • 0
この回答へのお礼

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

お礼日時:2005/02/19 02:53

>私がマクロや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
    • good
    • 0
この回答へのお礼

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

お礼日時:2005/02/19 02:33

あまりお奨めできませんがマクロの勉強ということなので例を考えてみました。


例えばフォント色を変えるイベントマクロで入力した数字によって点滅のように見せることができます。

シート名を右クリックして「コードの表示」から以下のコードをコピーペーストしてみてください。
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
    • good
    • 0
この回答へのお礼

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

お礼日時:2005/02/19 01:01

EXCELにはセル背景や文字を点滅させる方法はありません。


VBAで擬似的にはできないこともありませんが。

1. フラッシュの原理として
  A)セルの背景色書き換え
  B)文字色の書き換え
  のマクロを書く
2. Ontimeで数秒ごとにマクロ実行

と単純です。例えば、文字なら「黒」「白」を一定時間ごとに色を切り替えれば、点滅しているように見えます。

しかし、この場合常に数秒置きにマクロが実行されることになりますので、EXCELがまともに動作しなくなります。したがって、やめた方がよいでしょう。「目立たせたい」のであれば、「色使いやフォントの使い方によるデザイン」で勝負すべきです。

>マクロについて勉強したい...

とのことですが、セルや文字の点滅ではなく、別のテーマにした方が良いと正直思います。
    • good
    • 0
この回答へのお礼

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

お礼日時:2005/02/19 00:45

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

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


おすすめ情報

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