Я пытаюсь зафиксировать значение, введенное в текстовое поле экземпляра формы, который был создан с использованием следующего кода модуля:
Public myForm As Form_Form1
'Dim myForm As Form_Form1 ' tried this
Sub test()
'Dim myForm As New Form_Form1 ' tried this
Set myForm = New Form_Form1
With myForm
.Visible = True
' .SetFocus ' tried this
' .Modal = True ' tried this
If .IsCancelled Then
Exit Sub
End If
Debug.Print .RptDt
End With
Форма очень базовая c с OK и Отмена кнопка и одно текстовое поле с именем Text7. Код формы кода:
Private cancelling As Boolean
Public Property Get RptDt() As String
RptDt = Text7.Text
End Property
Public Property Get IsCancelled() As Boolean
IsCancelled = cancelling
End Property
Private Sub Command2_Click()
'DoCmd.Close acForm, Me.Name
Me.Visible = False
'Me.Visible
End Sub
Private Sub Command4_Click()
cancelling = True
'DoCmd.Close acForm, Me.Name
'MsgBox Me.Name
'MsgBox Me.OpenArgs
'Me.Hide
Me.Visible False
End Sub
Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer)
If CloseMode = VbQueryClose.vbFormControlMenu Then
cancelling = True
Me.Visible = False
End If
End Sub
Когда я запускаю код как есть, я получаю:
"Ошибка времени выполнения" 2185 "Вы не можете ссылаться на свойство или метод для элемента управления, если элемент управления не имеет фокуса "
Я также попытался:
Public Property Get RptDt() As String
RptDt = Text7.Value
End Property
Затем я получаю ошибку времени выполнения '94' Неправильное использование нуля. Приведенный выше код был изменен из сопоставимого кода Excel VBA, который использует метод Showform Userform (работает только в Excel) в Sub Test () вместо .Visible = True
.