【问题标题】:Userform textboxes are blank after reopening excel file重新打开excel文件后用户表单文本框为空白
【发布时间】:2019-08-03 10:33:53
【问题描述】:

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

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

【问题讨论】:

  • 你只需要将你的等式从你的点击事件反转到你的初始化事件。

标签: excel vba userform


【解决方案1】:

你需要为

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

  • 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

变成(当嵌入到 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

【讨论】:

猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2010-09-08
  • 2018-12-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-03-15
相关资源
最近更新 更多