重新打开 excel 文件后,用户表单文本框为空白

Userform textboxes are blank after reopening excel file

目前我有一个多页用户表单 MultiPage 并且每个 MultiPage 都有 Textboxes 它将接收用户的输入并且每个页面都有一个 BackNext 按钮,特别是下一个按钮有助于将值从用户窗体传输到名为 "DoNotPrint-Setup" 的 excel sheet。

  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 单元格中的值并将其应用于用户窗体文本框??

您需要为

创建逻辑
  • A) 确定您是否正在打开一个新文件(我建议使用检查来查找数据的最后一行 sheet,因为这很简单...也就是说,如果您使用的主文件不包含任何值)

  • B) 检查 A 后,您的初始化会做以下两件事之一(想想 If 语句):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

变成(当嵌入启动例程中时):

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