Я получил эту ошибку сегодня, и было так просто очистить, что я «facepalmed».
Просто попробуйте добавить элемент пользовательского интерфейса в свой XML-файл макета в каталоге res / layout-port !!!
Вы можете использовать локальную переменную Static
, чтобы «запомнить», был ли обработчик хотя бы один раз или нет:
Private Sub SWName_Field_MouseUp(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single)
Static executed As Boolean
If Not executed Then
SWName_Field.Text = ""
executed = True
End If
End Sub
Состояние локальной Static
привязано к вашему UserForm
] instance - значение будет «запомнено» до тех пор, пока экземпляр формы жив.
Это означает, что если вы показываете экземпляр формы по умолчанию , состояние не обязательно будет сброшено. Вы захотите убедиться, что вы получаете новое состояние формы по умолчанию каждый раз, когда форма показывается, а не только в первый раз - для этого вы New
заполняете форму:
With New UserForm1
.Show
End With
Если вы просто делаете [ 117], то вы не контролируете, когда создается экземпляр формы, как это делает VBA.
Вы также захотите контролировать, когда экземпляр формы будет уничтожен - вы можете сделать это, обработав событие формы QueryClose
:
Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer)
If CloseMode = VbQueryClose.vbFormControlMenu Then
Cancel = True ' cancel the destruction of the object
Me.Hide ' hide the instance instead
End If
End Sub
При этом объект будет уничтожен, когда выполнение достигнет End With
. Без него объект будет уничтожен, если пользователь нажмет кнопку «X», и вы, вероятно, не захотите, чтобы это произошло (особенно если вам нужно получить доступ к состоянию формы после ее закрытия).