Доступ к справке:
Форма может получить фокус только в том случае, если все видимые элементы управления в форме отключены или в ней нет элементов управления.
Возможно, вы захотите попробовать Activate.
РЕДАКТИРОВАТЬ комментарии
Единственный способ увидеть то, что вы, кажется, хотите сделать, - это API-интерфейсы, что несколько беспорядочно.Чтобы продемонстрировать это, вам понадобится форма с двумя элементами управления Text0 и Text2 (это имена по умолчанию).Установите интервал таймера на что-то подходящее, скажем, 2000, а событие таймера на:
Private Sub Form_Timer()
Dim lngWin As Long
Dim s As String
'This is just a counter to show that the code is running
Me.Text2 = Nz(Me.Text2, 0) + 1
'API
lngWin = GetActiveWindow()
s = GetWinName(lngWin)
If s = "Microsoft Access" Then
If Me.Text0 = "Lost Focus" Then
Me.Text0 = "Focus returned"
End If
Else
Me.Text0 = "Lost Focus"
End If
End Sub
Теперь вам понадобится модуль для:
Option Compare Database
Declare Function GetActiveWindow Lib "user32" () As Integer
Declare Function GetWindowText Lib "user32.dll" Alias _
"GetWindowTextA" (ByVal hwnd As Long, ByVal lpString As _
String, ByVal cch As Long) As Long
Declare Function GetWindowTextLength Lib "user32" Alias _
"GetWindowTextLengthA" (ByVal hwnd As Long) As Long
Function GetWinName(hw As Long)
Dim lngText As Long ' receives length of text of title bar
Dim strWinName As String ' receives the text of the title bar
Dim lngWinText As Long ' receives the length of the returned string
lngText = GetWindowTextLength(hw)
strWinName = Space(lngText + 1)
lngWinText = GetWindowText(hw, strWinName, lngText + 1)
strWinName = Left(strWinName, lngWinText)
GetWinName = strWinName
End Function
Это все очень, очень грубо, но это дает вам повод для беспокойства.