Заполнение текстовых полей VBA Userform из ячейки Excel - PullRequest
0 голосов
/ 03 июля 2018

Я пытаюсь заполнить текстовые поля пользовательской формы ("Userform1") ("SecurityTextBox", "VersionTextbox") из листа Excel ("Версия"). Я пытался выяснить, что происходит, но мне не удалось это выяснить.

Private Sub UserForm1_Initialize()
Dim ws As Worksheet
Set ws = Worksheets("Version")

SecurityTextBox.Text = ws.Cells.Range("C8").Value
VersionTextbox.Text = ws.Cells.Range("C13").Value
DeveloperTextBox.Text = ws.Cells.Range("C14").Value

End Sub

Проблема в том, что текстовые поля просто выглядят пустыми.

1 Ответ

0 голосов
/ 03 июля 2018

Обработчик _Initialize вызывается при создании экземпляра класса / формы. Если вы показываете форму, как это:

UserForm1.Show

Тогда может работать как положено, если это единственное, что вы когда-либо делаете с формой. Проблема в том, что это экземпляр формы по умолчанию , и вы не совсем контролируете , когда VBA собирается инициализировать этот глобальный экземпляр.

Взять под контроль.

With New UserForm1 'initializes a new instance of the class
    .Show
End With

Теперь обработчик _Initialize систематически запускается каждый раз, потому что это экземпляр New каждый раз. См. Мою UserForm1.Show статью о других подводных камнях при использовании форм по умолчанию.

...