Предполагается, что список не был загружен во время инициализации. Я пробовал активировать событие с аналогичным отсутствием успеха. Пожалуйста, попробуйте этот код.
Sub ShowMyForm()
Dim MyForm As New TryForm
Dim CellVal As Variant
CellVal = ActiveCell.Value
With MyForm
If Len(CellVal) Then
On Error Resume Next
.lstDV.ListIndex = Application.Match(CellVal, Range(.lstDV.RowSource), 0) - 1
End If
.Show
' code continues here when the form is closed
End With
Unload MyForm
End Sub
Этот код должен быть в стандартном модуле кода, а не в листе кода формы. Он вызывает форму TryForm
(замените на имя, которое вы дали своей форме), и изменяет его перед отображением. Обратите внимание, что у вас все еще есть полный доступ к форме для извлечения значений, которые вы можете захотеть после того, как она скрыта. Просто избегайте Unload Me
в любом месте кода формы, потому что выгрузка выполняется вышеуказанным кодом после того, как вы взяли все, что хотели.
Обратите внимание, что событие Initialize формы вызывается ключевым словом New
в Dim MyForm As New TryForm
, задолго до того, как вы получите доступ. Событие Activate следует с некоторой задержкой. Пожалуйста, убедитесь, что процедуры, которые вы можете запустить с этими событиями, не влияют на то, что делает приведенный выше код.