人気ブログランキング | 話題のタグを見る

Classの使い方2(ClassでEnter,Exitイベントを書きたいが)

'コントロールがアクティブなときだけ他のコントロールと色を変えたいが、
ClassにはEnter,Exitイベントが書けない。
で、次のようなコードで代用する。

'(前の「Classの使い方」を書いた上で次のコードを書き足す)


'Class1に以下のコードを記述する

Private Sub MyCmb_KeyUp(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
'KeyDownではActiveControlが移動する前に命令してしまうのでだめ
Call 白
Call 色
End Sub

Private Sub MyCmb_MouseDown(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single)
'MouseUpではComboBoxの場合プルダウンリストの選択ができなくなってしまう
Call 白
Call 色
End Sub

'標準モジュールに以下のコードを記述する

Public ctltype
Public myuf As UserForm

Sub フォーム表示()
Set myuf = UserForm1
ctltype = "ComboBox"
UserForm1.Show
End Sub

Public Sub 白()
Dim myobj As Control
Dim i, myindex
'アクティブコントロールの色を消す
Application.ScreenUpdating = False
With myuf
For i = 1 To 20
If .Controls(ctltype & i).BackColor = &H80FFFF Then
.Controls(ctltype & i).BackColor = &HFFFF80
End If
Next
End With
Application.ScreenUpdating = True
End Sub

Public Sub 色()
'アクティブコントロールに色をつける
Dim myindex
With myuf
myindex = Replace(.ActiveControl.Name, ctltype, "")
.Controls(ctltype & myindex).BackColor = &H80FFFF '(ActiveControlでは動かない)
End With
End Sub
by yuna-tip | 2006-01-23 13:11 | その他