カスタム イベントの作成に関するこの MSDN ガイドに従っていました。プロセスを理解したような気がしますが、なぜCompile Error: Event Not Found
for を取得しているのかわかりませんRaiseEvent ItemAdded
。奇妙なことに、ItemAdded イベントは IDE によって認識されるため (すべて小文字で入力すると、自動的に適切に書式設定されます)、VB によって認識されることがわかります。
DataComboBox クラス モジュール コード:
Public Event ItemAdded(sItem As String, fCancel As Boolean)
Private pComboBox As Control
Public Property Set oComboBox(cControl As Control)
Set pComboBox = cControl
End Property
Public Property Get oComboBox() As Control
oComboBox = pComboBox
End Property
Private Sub Class_Initialize()
End Sub
Private Sub Class_Terminate()
End Sub
UserForm には、btnAdd という名前の CommandButton と cboData という名前の ComboBox の 2 つのコントロールが含まれています。
ユーザーフォームコード:
Private WithEvents mdcbCombo As DataComboBox
Private Sub UserForm_Initialize()
Set mdcbCombo = New DataComboBox
Set mdcbCombo.oComboBox = Me.cboData
End Sub
Private Sub mdcbCombo_ItemAdded(sItem As String, fCancel As Boolean)
Dim iItem As Long
If LenB(sItem) = 0 Then
fCancel = True
Exit Sub
End If
For iItem = 1 To Me.cboData.ListCount
If Me.cboData.List(iItem) = sItem Then
fCancel = True
Exit Sub
End If
Next iItem
End Sub
Private Sub btnAdd_Click()
Dim sItem As String
sItem = Me.cboData.Text
AddDataItem sItem
End Sub
Private Sub AddDataItem(sItem As String)
Dim fCancel As Boolean
fCancel = False
RaiseEvent ItemAdded(sItem, fCancel)
If Not fCancel Then Me.cboData.AddItem (sItem)
End Sub