Чрезвычайно загадочно:
При открытии простой формы из другой формы с помощью vba курсор перемещается в определенное поле.
Однако, когда это поле имеет значение Null, каждый второй раз Ошибка 2110. Используемый синтаксис меняется каждый раз, как показано ниже.
Еще более загадочно:
При нажатии «Отладка» ошибка оказывается мнимой: в соответствующей строке кода можно просто продолжить с F5 или F8, и процедура завершается правильно с фокусировкой, где это необходимо.
Я нашел условный обходной путь , который не генерирует сообщение об ошибке, но хотел бы, если возможно, избежать такого хромающего кодирования:
'…
Debug.Print Me![MyTextField].Enabled ' always True
Debug.Print Me.Name ' always correct form
Me.Repaint
On Error Resume Next
[MyTextField].SetFocus ' without Me!
Me![MyTextField].SetFocus
' Forms![MyForm]![MytextField] : same result as with Me!]
' one time error with Me! but not without Me!,
' next time vice versa, and so forth…
On Error GoTo 0
'…
Когда [MyTextField] не равно Null, оба синтаксиса работают нормально, не генерируя ошибку.
Что не так с этой командой .SetFocus? «Восстановление» базы данных не помогло.