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 |
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を設定してくださいね。 |
こうちゃん さん ありがとうございます。。レスおそくなってすみません。。おかげさまでばっちり思うようにいきました。。これを仕事に使いたいので、、助かりました。。。本当に本当にありがとうございました。。 |
こういうやり方もあります。 動作前提として、各ラベルの前景色が赤か緑であること、そして タイマ間隔はあらかじめ 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 つのラベルのキャプションを入れ替えていく方が簡単 だと思います。 # 関係なければ、忘れてください。 |
YU-TANG さん ご指導いただきありがとうございました。。さっき試すとうまくいき、また、勉強になりました。。。皆さんに教えていただき、本当にうれしいです。。また、、レス遅れまして申し訳ありませんでした。。 |