( Ver 1.2 で x64 対応となりました )
UserForm を使っていて『文字を点滅させたい』と思った事はありませんか?
残念ながら、VBAのUserForm には【点滅】という機能はサポートされていません。
点滅動作をVBAで実現させる為には、一定時間ごとに文字色を「元の色⇔背景色」と交互に
切り換える必要があります(Visible プロパティの変更で表示/非表示の切り換えでも可)。
この処理を毎回プログラミングするのは大変ですので、クラスモジュール化して簡単に利用できる
ようにしてみましたので、興味のある方は試してみて下さい。
ただし、点滅動作中は制御が戻って来ませんので、『処理実行中』の案内表示には使えません。
あくまでも、「ユーザーへの注意喚起 または 呼び出し」というユーザー応答待ちの利用に限られます。
(利用方法)
1.下記のサンプルブックをダウンロードして、クラスモジュール[clsBlinkLabel ]を各自のブックに
インポートしてください。
サンプルブック( BlinkLabel_V12.zip 23KB ) (2011/9/20 Ver1.2)
2005/3/10 Ver1.1 解説文・クラスソース・サンプルソースにおいて、オブジェクト定義時での[New]指定
を止めて、Initialize 時にインスタンス生成(Set ステートメント)するように修正しました。
2011/9/20 Ver1.2 Win32-API 処理に [ x64 ] 対応の修正を行ないました。
※ アドイン化しました [ 2005/3/8 初版 ] [ 2011/9/27 x64対応版で再構築 ]
2.UserFormのモジュール宣言セクションにて、点滅させるラベルを登録するオブジェクト変数を
定義します。
Private BlinkLabel1 As clsBlinkLabel '点滅させるラベル
3.Initialize / Terminateイベントで、上記のオブジェクト変数の設定/廃棄処理を記述します。
Private Sub UserForm_Initialize()
'点滅ラベルの登録
Set BlinkLabel1 = New clsBlinkLabel
BlinkLabel1.Cmd = Me.Label1
End Sub
Private Sub UserForm_Terminate()
Set BlinkLabel1 = Nothing
End Sub※ アドイン化したクラスを利用している場合は、New キーワードを使わずに下記のようにします。
Set BlinkLabel1 = CreateBlinkLabelCls ( )
(CreateBlinkLabelCls 関数は、クラスアドイン で用意してある関数です)
4.ラベル点滅を行なう場所にBlink メソッドを記述すれば、それだけでラベルの点滅ができます。
点滅は「0.5秒間隔」で、ラベルをクリックするか、指定回数に達するまで繰り返されます。
点滅が終了(指定回数に達する or BlinkStopメソッド発行)するまでは、Blinkメソッドの次のス
テップには進みません。
Label1.Caption = "ラベル点滅テスト" '点滅させる内容をセット
BlinkLabel1.Blink 20 '20回点滅
'BlinkLabel1.Blink 20, vbRed, vbBlue, True, 3 '赤⇔青20回点滅でメール着信音付
Label1.Caption = "" '点滅が終わったので消しておく
5.点滅は、ラベルをクリックするか指定回数に達した時に止まりますが、ラベルクリック以外のユー
ザー応答でも止められるように、UserForm_Click と TextBox1_Enter 等フォーカス移動で起動
するイベントにBlinkStopメソッドを記述します(BlinkStopメソッドは、単に停止フラグを立てて
いるだけですので、点滅していない状態でBlinkStopメソッドを行なっても支障はありません)。
Private Sub UserForm_Click()
'UserFormクリックのユーザー応答で点滅停止
BlinkLabel1.BlinkStop
End Sub
Private Sub TextBox1_Enter()
'フォーカス移動などのユーザー応答で点滅停止
BlinkLabel1.BlinkStop
End Sub
6.Blink メソッドの引数
Blink ( BlinkCount, [BlinkColor1], [BlinkColor2], [Buzzer], [Sound] )
BlinkCount 以外の引数は省略可能です。
BlinkCount 点滅回数を指定します。無限指定はありません。
指定回数に達するか、ラベルをクリックした時点、もしくは、
BlinkStopメソッド実行で点滅は止まります。
BlinkColor1 省略時はLabelの文字色になります。色を直接指定する場合は、
16進定数/RGB関数/vbRed等のカラー定数/vbWindowText等の
システムカラー定数で指定してください。
BlinkColor2 省略時はLabelの背景色になります。色を直接指定する場合は、
16進定数/RGB関数/vbRed等のカラー定数/vbWindowText等の
システムカラー定数で指定してください。
Buzzer 点滅に合わせて音を鳴らす場合は[True]を指定します。
省略すると[False]になります。
Sound Buzzer=True の場合に、音の種類を指定します。
0(Beep音), 1(Ding.wav), 2(Chord.wav), 3(Notify.wav)
Ding.wav(一般の警告音) / Chord.wav(警告,情報,問合せ)
Notify.wav(メール着信音)は[Windowsフォルダ\Media]内にある
Windows標準音です
7.メッセージ専用フォームで使う場合(表示と同時に点滅、ユーザー応答で点滅停止&
フォームを閉じる)には、下記のように『Activate イベント』でBlink メソッドを使います。
Label1 と CommandButton1 をフォームに貼り付けて、下記のコードを記述します。
Private BlinkLabel1 As clsBlinkLabel '点滅させるラベル
Private Sub UserForm_Initialize()
'点滅ラベルの登録
Set BlinkLabel1 = New clsBlinkLabel
BlinkLabel1.Cmd = Me.Label1
End Sub
Private Sub UserForm_Terminate()
Set BlinkLabel1 = Nothing
End Sub
Private Sub UserForm_Activate()
'UserForm表示と同時にラベルの点滅を開始
Label1.Caption = "ラベル点滅テスト" '点滅させる内容をセット
BlinkLabel1.Blink 100, , , True '回数を少し多めにしてユーザー応答を待つ
Label1.Caption = "" '点滅が終わったので消しておく
Unload Me '点滅終了でUserFormも閉じる
End Sub
Private Sub UserForm_Click()
'UserFormクリックのユーザー応答で点滅停止
BlinkLabel1.BlinkStop
'UserFormのUnLoadは、Activateイベントの[Blink]後処理に任せる
End Sub
Private Sub CommandButton1_Click()
'ユーザー応答で点滅停止
BlinkLabel1.BlinkStop
'UserFormのUnLoadは、Activateイベントの[Blink]後処理に任せる
End Sub
|
||
角田 桂一 Mail:addinbox@h4.dion.ne.jp CopyRight(C) 2001 Allrights Reserved. |