過去ログ

                                Page     102
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
   通常モードに戻る  ┃  INDEX  ┃  ≪前へ  │  次へ≫   
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
 ▼フラッシュ  DELSOL 02/11/14(木) 1:12
   ┣Re:フラッシュ  こうちゃん 02/11/14(木) 12:16
   ┃  ┗Re:フラッシュ  DELSOL 02/11/15(金) 20:23
   ┗Re:フラッシュ  YU-TANG 02/11/14(木) 21:17
      ┗Re:フラッシュ  DELSOL 02/11/15(金) 20:31

 ───────────────────────────────────────
 ■題名 : フラッシュ
 ■名前 : DELSOL
 ■日付 : 02/11/14(木) 1:12
 -------------------------------------------------------------------------
   はじめまして、、まず、フォームでテキストボックス1つと、ラベルを4つ作成します。テキストBOXに数字を0,1,2,3,4とそれぞれ入力した場合、非表示、ALM1、ALM2、ALM3、ALM4とフラッシュするようにしたいのです。。テキストボックスのプロパティは(名前)txtDueDate ラベルのプロパティは(名前)WarninMsg1(標題)ALM1、(名前)WarninMsg2(標題)ALM2、(名前)WarninMsg3(標題)ALM3、(名前)WarninMsg4(標題)ALM4 とします。。テキストボックス1つと、ラベル1つを元に、0を入力すると非表示、整数を入力したらフラッシュするものを作りましたが、テキストボックス1つにラベル4つを対応させるものがつくりたいのです。。ぜひおしえていただきたいのですが、、 (下記は現在のものです。。)


  Private Sub Form_Timer()
  With Me!WarninMsg1
     .ForeColor = (IIf(.ForeColor = vbRed, vbGreen, vbRed))
  End With
End Sub


Private Sub Form_Current()
If txtDueDate > 0 Then
  Me.TimerInterval = 300
  Me!WarninMsg1.Visible = True
Else
  Me.TimerInterval = 0
  Me!WarninMsg1.ForeColor = vbBlack
  Me!WarninMsg1.Visible = False
End If
End Sub

Private Sub txtDueDate_AfterUpdate()
  Form_Current
End Sub

 ───────────────────────────────────────  ■題名 : Re:フラッシュ  ■名前 : こうちゃん <nakajima19@hotmail.com>  ■日付 : 02/11/14(木) 12:16  -------------------------------------------------------------------------
   DELSOLさん、こんにちは

レスがつかないようなので、レスがつくまでのつなぎで、思いっきりベタですが・・
こんな感じでどうでしょ?

Private Sub Form_Timer()
  
  Select Case Me.txtDueDate.Value
    Case 1
      Me.WarninMsg1.ForeColor = (IIf(WarninMsg1.ForeColor = vbRed, vbGreen, vbRed))
      Me.WarninMsg2.ForeColor = vbBlack
      Me.WarninMsg3.ForeColor = vbBlack
      Me.WarninMsg4.ForeColor = vbBlack
    Case 2
      Me.WarninMsg1.ForeColor = vbBlack
      Me.WarninMsg2.ForeColor = (IIf(WarninMsg2.ForeColor = vbRed, vbGreen, vbRed))
      Me.WarninMsg3.ForeColor = vbBlack
      Me.WarninMsg4.ForeColor = vbBlack
    Case 3
      Me.WarninMsg1.ForeColor = vbBlack
      Me.WarninMsg2.ForeColor = vbBlack
      Me.WarninMsg3.ForeColor = (IIf(WarninMsg3.ForeColor = vbRed, vbGreen, vbRed))
      Me.WarninMsg4.ForeColor = vbBlack
    Case 4
      Me.WarninMsg1.ForeColor = vbBlack
      Me.WarninMsg2.ForeColor = vbBlack
      Me.WarninMsg3.ForeColor = vbBlack
      Me.WarninMsg4.ForeColor = (IIf(WarninMsg4.ForeColor = vbRed, vbGreen, vbRed))
  End Select

End Sub

Private Sub Form_load()
  Me.TimerInterval = 300
  Me!WarninMsg1.Visible = False
  Me!WarninMsg2.Visible = False
  Me!WarninMsg3.Visible = False
  Me!WarninMsg4.Visible = False
End Sub

Private Sub txtDueDate_AfterUpdate()

  Select Case Me.txtDueDate.Value
    Case 0
      Me!WarninMsg1.Visible = False
      Me!WarninMsg2.Visible = False
      Me!WarninMsg3.Visible = False
      Me!WarninMsg4.Visible = False
    Case 1
      Me.WarninMsg1.ForeColor = vbGreen
      Me!WarninMsg1.Visible = True
      Me!WarninMsg2.Visible = True
      Me!WarninMsg3.Visible = True
      Me!WarninMsg4.Visible = True
    Case 2
      Me.WarninMsg2.ForeColor = vbGreen
      Me!WarninMsg1.Visible = True
      Me!WarninMsg2.Visible = True
      Me!WarninMsg3.Visible = True
      Me!WarninMsg4.Visible = True
    Case 3
      Me.WarninMsg3.ForeColor = vbGreen
      Me!WarninMsg1.Visible = True
      Me!WarninMsg2.Visible = True
      Me!WarninMsg3.Visible = True
      Me!WarninMsg4.Visible = True
    Case 4
      Me.WarninMsg4.ForeColor = vbGreen
      Me!WarninMsg1.Visible = True
      Me!WarninMsg2.Visible = True
      Me!WarninMsg3.Visible = True
      Me!WarninMsg4.Visible = True
    Case Else
      MsgBox "0から4を入力してね"
  
  End Select

End Sub

どっちがいいかわからなかったので、0以外のときは、選択されていないラベルは黒で表示するようになってます。
必要に応じてCase文で選択されていないラベルのVisibleを設定してくださいね。

 ───────────────────────────────────────  ■題名 : Re:フラッシュ  ■名前 : DELSOL  ■日付 : 02/11/15(金) 20:23  -------------------------------------------------------------------------
   こうちゃん さん ありがとうございます。。レスおそくなってすみません。。おかげさまでばっちり思うようにいきました。。これを仕事に使いたいので、、助かりました。。。本当に本当にありがとうございました。。

 ───────────────────────────────────────  ■題名 : Re:フラッシュ  ■名前 : YU-TANG <yu-tang@my.tramonline.net>  ■日付 : 02/11/14(木) 21:17  -------------------------------------------------------------------------
   こういうやり方もあります。

動作前提として、各ラベルの前景色が赤か緑であること、そして
タイマ間隔はあらかじめ 300 になっていることが必要です。

Option Compare Database
Option Explicit

Dim Labels(1 To 4) As Label

Private Sub Form_Load()
  Set Labels(1) = Me!WarninMsg1
  Set Labels(2) = Me!WarninMsg2
  Set Labels(3) = Me!WarninMsg3
  Set Labels(4) = Me!WarninMsg4
  Form_Timer
End Sub

Private Sub Form_Current()
  Form_Timer
End Sub

Private Sub txtDueDate_AfterUpdate()
  Form_Timer
End Sub

Private Sub Form_Timer()
  Dim intTagetLabel As Integer
  Dim i As Integer
  intTagetLabel = Nz(Me!txtDueDate)
  For i = 1 To UBound(Labels)
    If intTagetLabel = i Then
      Labels(i).Visible = True
      ' 注意!下記コードは、あらかじめ各ラベルの前景色が
      ' 赤か緑であるという前提下でのみ動作します。
      Labels(i).ForeColor = (Labels(i).ForeColor Xor vbYellow)
    Else
      Labels(i).Visible = False
    End If
  Next
End Sub

面倒いのでタイマを停止させる処理は省いています。

ただし、ご質問の中に記述が無かったので分かりませんが、もし仮に
4 つのラベルが別々の位置に配置されるのではなく、同じ位置に重ねて
配置して切り替えようとしていらっしゃるのであれば、可視を操作する
のではなく、1 つのラベルのキャプションを入れ替えていく方が簡単
だと思います。

# 関係なければ、忘れてください。

 ───────────────────────────────────────  ■題名 : Re:フラッシュ  ■名前 : DELSOL  ■日付 : 02/11/15(金) 20:31  -------------------------------------------------------------------------
   YU-TANG さん ご指導いただきありがとうございました。。さっき試すとうまくいき、また、勉強になりました。。。皆さんに教えていただき、本当にうれしいです。。また、、レス遅れまして申し訳ありませんでした。。

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━    通常モードに戻る  ┃  INDEX  ┃  ≪前へ  │  次へ≫    ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━                                 Page 102