重新打开 excel 文件后,用户表单文本框为空白
Userform textboxes are blank after reopening excel file
目前我有一个多页用户表单 MultiPage
并且每个 MultiPage
都有 Textboxes
它将接收用户的输入并且每个页面都有一个 Back
、Next
按钮,特别是下一个按钮有助于将值从用户窗体传输到名为 "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
目前我有一个多页用户表单 MultiPage
并且每个 MultiPage
都有 Textboxes
它将接收用户的输入并且每个页面都有一个 Back
、Next
按钮,特别是下一个按钮有助于将值从用户窗体传输到名为 "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