Я заметил, что когда я создаю модуль класса для текстового поля и использую его в своих формах - добавляя через VBA в событие инициализации формы - ни один из методов ввода или выхода не доступен. Конечно, если я просто добавлю текстовое поле в форму, они будут.
Я могу заставить метод DblClick работать нормально, поэтому мой класс настроен правильно, и мой код form.init также в порядке.
Когда я смотрю в браузере объектов на наличие MSForms.TextBox, я вижу, что в нем нет методов Enter или Exit, и предполагаю, что это причина.
Для меня это не срочно, потому что я заметил это при создании моей первой формы, которая использует мои собственные классы для текстового поля - к счастью для того, над чем я сейчас работаю - на самом деле мне не нужны методы Enter или Exit, но подумал, что кто-то может знать, есть ли обходной путь, потому что они могут понадобиться мне в будущем, и для текстовых полей это очень полезные методы
Вот мой код класса с именем nxTxtV
Option Explicit
Public WithEvents oTxtV As MSForms.TextBox
Private Sub oTxtV_Enter()
' This method never fires
MsgBox "Hello World from the Enter Method"
End Sub
Private Sub oTxtV_DblClick(ByVal Cancel As MSForms.ReturnBoolean)
' This method works fine
MsgBox "Hello World from the DoubleClick Method for " & oTxtV.Value
End Sub
и вот мой код инициализации формы
Private Sub UserForm_Initialize()
Dim xItm As Control, i As Long
Dim dItm As nxTxtV ' nxTxtV is the name of my class
For i = 1 To 5
Set xItm = Me.Controls.Add("Forms.TextBox.1", "Column" & i, True)
With xItm
.Value = "P" & i
.AutoSize = False
.Font.Size = 9
.Width = 25
.Height = 250
.TextAlign = 2 ' Centred
.SpecialEffect = 0
.BackColor = RGB(255, 128, 0)
.WordWrap = True
.Left = 200 + (i * 27)
.Top = 5
.Enabled = True
.Visible = True
End With
Set dItm = New nxTxtV ' nxTxtV is the name of my class
Set dItm.oTxtV = xItm
CodedObjs.Add dItm ' CodedObjs is declared at module level (form level) as a Collection
Next i
End Sub
Короче говоря, могу ли я заставить свой класс реагировать на события входа и выхода?
Добавление - Декларация CodedObjs
Public CodedObjs As New Collection