Вам нужно сослаться на Text1.SetFocus из Form_Activate, а не из Form_Load -
http://www.vb6.us/tutorials/understanding-forms-vb6-tutorial
Form_Load против Form_Activate
В событии Form_Load вы обычно выполняете задачи типа инициализации, как и должны. Однако некоторые типы действий не могут быть выполнены в событии Load, поскольку форма полностью загружается только после завершения события Load. Во-первых, печать в форму не будет работать, когда выполняется событие Load. Кроме того, если вы попытаетесь установить фокус на конкретный элемент управления в форме во время события Load, вы получите сообщение «Ошибка времени выполнения« 5 »: недопустимый вызов процедуры или аргумент». Например, предположим, что у вас есть текстовое поле с именем Text1 в форме. Следующий код приведет к этой ошибке:
Private Sub Form_Load()
' other initialization stuff
Text1.SetFocus ' causes an error
End Sub
Причина ошибки заключается в том, что поскольку форма загружена не полностью, на ней нет ни одного элемента управления, и вы не можете установить фокус на элемент управления, который еще не доступен.
Чтобы устранить эту проблему, вы должны использовать одно из других событий формы, например, событие «Активировать». (Когда VB загружает форму, он фактически циклически проходит через ряд событий, таких как: инициализация, загрузка, изменение размера, активация, GotFocus и Paint. Из них, вероятно, наиболее часто используются загрузка и активация.) Размещение кода установить фокус на элемент управления будет работать в событии Form_Activate:
Private Sub Form_Activate()
' other statements
Text1.SetFocus ' no problem here
End Sub
Предупреждение о событии активации: оно будет срабатывать всякий раз, когда ваше приложение переключается на эту форму. Например, если вы переключаетесь между Form1 и Form2, помните, что любой код, который вы можете иметь в событиях Activate для этих форм, будет выполняться при переключении на эту форму. Поэтому, если у вас есть код в событии Activate, который вы хотите выполнить только «в первый раз», вам нужно будет контролировать выполнение с помощью логического переключателя. Например, в общих декларациях вашей формы вы можете определить следующую переменную:
Private mblnFormActivated As Boolean ' will be initialized to False by default
Затем вы можете использовать этот переключатель в событии Activate следующим образом:
Private Sub Form_Activate()
If mblnFormActivated Then Exit Sub
' statements you only want to execute once, including the following
' statement to turn the switch on:
mblnFormActivated = True
End Sub