Текстовые поля пользовательской формы остаются пустыми после повторного открытия файла Excel - PullRequest
0 голосов
/ 12 марта 2019

В настоящее время у меня есть пользовательская форма с несколькими страницами, также известными как MultiPage, и каждая из них MultiPage имеет Textboxes, которая будет принимать входные данные от пользователя, и на каждой из этих страниц есть кнопка Back, Next и, в частности, следующая кнопка помогает переносить значения из пользовательской формы в лист Excel, называемый "DoNotPrint-Setup".

enter image description here

  Private Sub btnNext2_Click()


    If cbClient = "" Or tbProject.Value = "" Or tbNumber.Value = "" Or tbRevision.Value = "" Or tbDate.Value = "" Or tbPMOC.Value = "" Or tbPMOE.Value = "" Or tbClientE.Value = "" Or tbClientN.Value = "" Or tbClientP.Value = "" Or tbClientSA1.Value = "" Or tbClientSA2.Value = "" Then
    If MsgBox("Form is not complete. Do you want to continue?", vbQuestion + vbYesNo) <> vbYes Then
    Exit Sub
    End If

End If

    With Sheets("DoNotPrint - Setup")
        .Range("C7").Value = Me.cbClient.Text
        .Range("C8").Value = Me.tbProject.Text
        .Range("C9").Value = Me.tbNumber.Text
        .Range("C10").Value = Me.tbRevision.Text
        .Range("C11").Value = Me.tbDate.Text
        .Range("C12").Value = Me.tbPMOC.Text
        .Range("C13").Value = Me.tbPMOE.Text
        .Range("C14").Value = Me.tbClientN.Text
        .Range("C15").Value = Me.tbClientE.Text
        .Range("C16").Value = Me.tbClientP.Text
        .Range("C17").Value = Me.tbClientSA1.Text
        .Range("C18").Value = Me.tbClientSA2.Text
End With
Me.MultiPage1.Value = 2

ending:
End Sub

Это то, что у меня есть для процесса инициализации файла ниже:

Private Sub UserForm_Initialize()

    WizardProp.MultiPage1.Value = 0
    Me.MultiPage1.Style = fmTabStyleNone

End Sub

И у меня в конце есть кнопка Готово, которая скрывает пользовательскую форму

Private Sub BtnFinish_Click()
    Me.Hide
End Sub

Так что сейчас он берет вывод из пользовательской формы и вводит значения в ячейку Excel, но когда я закрываю файл Excel, текстовые поля пользовательской формы остаются пустыми, когда он снова открывается. Так есть ли способ взять значения в ячейках Excel и применить их к текстовым полям Userform при повторном открытии Userform ??

1 Ответ

2 голосов
/ 12 марта 2019

Вам нужно будет создать логику для

  • A) Определение того, открываете ли вы новый файл (я рекомендую использовать проверку, чтобы найти последнюю строку в вашем листе данных, так как этодовольно просто ... то есть если вы используете мастер-файл, который не содержит значений)

  • B) После того, как вы проверили A, тогда ваша инициализация делает одну из двух вещей (подумайте, если выражение): 1) открывается пустым, 2) открывается со значениями

Теперь первая часть B довольно проста, вы уже получили это;вторая часть будет просто инвертировать ваше утверждение With:

With Sheets("DoNotPrint - Setup")
    .Range("C7").Value = Me.cbClient.Text
    .Range("C8").Value = Me.tbProject.Text
    .Range("C9").Value = Me.tbNumber.Text
    .Range("C10").Value = Me.tbRevision.Text
    .Range("C11").Value = Me.tbDate.Text
    .Range("C12").Value = Me.tbPMOC.Text
    .Range("C13").Value = Me.tbPMOE.Text
    .Range("C14").Value = Me.tbClientN.Text
    .Range("C15").Value = Me.tbClientE.Text
    .Range("C16").Value = Me.tbClientP.Text
    .Range("C17").Value = Me.tbClientSA1.Text
    .Range("C18").Value = Me.tbClientSA2.Text
End With

Becomes (при включении в процедуру Initiate):

With Sheets("DoNotPrint - Setup")
    Me.cbClient.Text = .Range("C7").Value
    '... 
    Me.tbClientSA1.Text = .Range("C17").Value
    Me.tbClientSA2.Text = .Range("C18").Value
End With
...