カンパ〜イ!←最初の1杯目、なに頼む?

お世話になります。
忘れやすい入力セル シート名“施設”の セルF3
(入力が必要なのは100回に1回くらいなので、やむを得ませんが)を気に留めさせるために、そのセルF3の背景色を例えば「薄い青」と「白」で交互に入れ替えればどうかと思いました。

ネットで検索すると、下記のQ&Aが参考になり、うまく当てはめられるものもありました。

しかし、下記ページのANo.#6様の方法がとても魅力的に思えたのですが、うまく出来ないのです。

私の至らない点を教えていただけるでしょうか?

私は、下記ページのコードをシートモジュールに貼りつけました。
しかし、それだけではセルの色は変わりません。

OSはWin2000PRO エクセル2002を使用しています。

http://virus.okwave.jp/kotaeru.php3?q=1499419&re …

入力忘れを防止するためが目的ですが、フォームに入力欄を設けたりはしたくないのです。(ほとんどの場合は省略できるので)

よろしく、お教えください。
お願いいたします。

A 回答 (4件)

こういう方法はいかがでしょうか。



標準モジュールに以下を記述

Sub Blink()
 Const ColorIdx1 = 37
 Const ColorIdx2 = xlColorIndexNone
 With Worksheets("Sheet1").Range("A1").Interior
  If .ColorIndex = ColorIdx1 Then
   .ColorIndex = ColorIdx2
  Else
   .ColorIndex = ColorIdx1
  End If
 End With
 Application.OnTime Now + TimeValue("00:00:01"), "Blink"
End Sub

続いてThisWorkBookに以下を記述

Private Sub Workbook_Open()
 Blink
End Sub

これで保存していったんブックを閉じ、再び開いてみてください。Sheet1のA1セルが1秒間隔で点滅します。
    • good
    • 1
この回答へのお礼

お礼が遅くなり、大変申し訳ありません。(しばらくネットを見れない日がありました。)


本当に、ありがとうございました。

期待どおりのものができて、大満足です。

これで、仕事の説明も簡単にできるようになりました。

ありがとうございました。

お礼日時:2007/02/18 16:10

こんばんは。

#1 のWendy02です。

コード的にみて、#1 と#2では、#2のほうが出来がよいです。OnTime の点滅スピードは、1秒以上だったと思いますので、それ以下になると、以下のようなものになります。ただし、長い間点滅するのはうっとうしいので、回数を決めてあります。

これは、標準モジュールのみの設定です。それ以外では、エラーが返ります。起動自体は、Workbook_Open や Auto_Openなどに、Call TimerCall で、設定してください。

もしも、[回数設定]しなければ、開いている間中、点滅しています。入力しているときだけ、点滅はとまります。回数を設定しないで止めるときは、TimerStopをしないと、止まりません。

以下は、私にとっても、高嶺の花のコードですが、もう、半分棺おけに入っているコードですから、WinXPの後、どうなるのか分かりません。今は、まだ、私などは、10年も15年も遅れて勉強をしている段階ですので、先は長いなって思います。


'標準モジュール
'--------------------------------------------------------

Private Declare Function GetTickCount Lib "kernel32" () As Long
Private Declare Function SetTimer Lib "user32" _
  (ByVal Hwnd As Long, ByVal nIDEvent As Long _
  , ByVal uElapse As Long _
  , ByVal lpTimerFunc As Long) As Long
Private Declare Sub KillTimer Lib "user32" (ByVal Hwnd As Long, ByVal nIDEvent As Long)

Private myTimerId As Long
Private myRng As Range
Private myStartUp As Long
Private myCount As Long


Sub TimerCall()
 '起動キー
  Dim myInterval As Long
  myCount = 0
  myInterval = 300 '単位は、ms(ミリ秒)
  Set myRng = Sheet2.Range("F3")
  myStartUp = GetTickCount()
  myTimerId = SetTimer(0&, 0&, myInterval, AddressOf TimerCount)
End Sub

Sub TimerCount(ByVal Hwnd As Long, ByVal uMsg As Long _
  , ByVal idEvent As Long, ByVal dwTime As Long)
  Dim myTime As Double
  i = (GetTickCount() - myStartUp) Mod 2 '点滅
  On Error Resume Next
  myRng.Interior.ColorIndex = i * 34 '色のColorIndex
  myCount = i + myCount 'カウントを取る
  If myCount > 20 Then Call TimerStop '回数設定
End Sub

Sub TimerStop()
  'タイマーを止める
  KillTimer 0&, myTimerId
  myRng.Interior.ColorIndex = xlNone
End Sub
    • good
    • 1
この回答へのお礼

お礼が遅くなり、大変申し訳ありません。(しばらくネットを見れない日がありましたのと、
>起動自体は、Workbook_Open や Auto_Openなどに、Call TimerCall で、設定してください。
の部分が私のレベルでは判らず、ネットで検索していました。)

この質問で、他の方がThisWorkbookに別に記す方法をお教えいただいたので、それを応用して貼り付けると、思い通りにできました。

本当に、ありがとうございました。

期待どおりのものができて、大満足です。

ありがとうございました。

お礼日時:2007/02/18 16:07

「100回に1回くらい」しか、F3セルの入力は不要なのですね?



F3セルに入力が必要となる条件がはっきりしているなら、その条件になった時に警告メッセージを出せばよいのではありませんか?
(点滅も一種の警告メッセージといえますが…)

100回の内99回まで必要ではない「警告メッセージ」を毎回出すと、入力する側は煩わしいし、警告の意味も薄れます。
    • good
    • 0
この回答へのお礼

説明不足ですみません。

この場所は、何月かを入力する場所なのですが、自動で今月が入るように設定されているので、普段は入力しなくて良いのです。

このファイルは、原則、当月のみの処理に限っていますので。

そうは言っても、月末になると、例外的に翌月分の登録をしたり、月初に前月分の処理をすることもまれにあるのですが、そのためのものなのです。

警告メッセージではありますが、ソフトに注意を促す程度でいいと思っています。


アドバイス ありがとうございました。

お礼日時:2007/02/14 16:00

こんにちは。

Wendy02です。

>下記ページのANo.#6様の方法がとても魅力的に思えたのですが、うまく出来ないのです。

そこに書かれているものは、ほんのお遊び程度にしか過ぎません。今みると、少し不安も感じますし、また、このレベルでも、本格的なものを作るには、かなり、高度な技術が必要な気がします。

今回は、簡易型です。(すみません)

'シートモジュール設定' WorkSheet_Activate イベント と用いると良いです。
'Option Explicit
'次にPrivate Declare... を入れます。
Private Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)
 
Sub ColorAlternating()
Dim myInt As Long
Dim i As Long
myInt = 300 '点滅のスピード 1000 = 1秒
With Range("F3")
For i = 1 To 10
   DoEvents
  .Interior.ColorIndex = 34 '薄い青
   Sleep myInt
  .Interior.ColorIndex = 2 'しろ
   Sleep myInt / 2
Next
 .Interior.ColorIndex = 0 '自動
  Beep
End With
End Sub
    • good
    • 0
この回答へのお礼

奥深い知識を有している Wendy02さんには、尊敬の念でいっぱいです。

ありがとうございます。

勉強させていただきます。

お礼日時:2007/02/18 16:12

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

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


おすすめ情報