【问题标题】:Assigning variable value to textbox on next userform在下一个用户窗体上将变量值分配给文本框
【发布时间】:2019-06-17 19:10:27
【问题描述】:

我正在设置一个用户表单来捕获新的客户端数据。每个客户都分配有一个客户 ID(编号),输入数据旁边保存在 Excel 工作表中。完成第一个用户表单后,将打开一个带有估算设计摘要的新用户表单。

我想将第一个用户窗体中分配的客户端 ID 号保存到第二个用户窗体上的文本框中,但不断弹出类型不匹配错误。调试时显示分配给变量的值没有传递到文本框。

(相同的代码以前在这些相同的用户窗体上工作,并且仍然在以后的用户窗体上工作

Private Sub Continue1_Click()

'Determine empty row

Dim emptyRow As Long
Sheet5.Activate

emptyRow = WorksheetFunction.CountA(Range("B:B")) + 1

'Transfer userform data to spreadsheet

Cells(emptyRow, 2).Value = CName.Value
Cells(emptyRow, 3).Value = Business.Value
Cells(emptyRow, 4).Value = Region.Value
Cells(emptyRow, 5).Value = Email.Value
Cells(emptyRow, 6).Value = CNumber.Value
Cells(emptyRow, 7).Value = WSource.Value
Cells(emptyRow, 8).Value = Flow.Value
Cells(emptyRow, 9).Value = Pressure.Value
Cells(emptyRow, 10).Value = Irrigation.Value

'Load Design Estimation userform

DesignEst.Client_ID.Value = emptyRow - 1
Unload Me
DesignEst.Show

End Sub

如果emptyRow 的值为5,则必须将该值分配给DesignEst 用户表单上的Client_ID 文本框,但目前它会产生:

DesignEst.Client_ID.Value = ""

代替:

DesignEst.Client_ID.Value = "5"

【问题讨论】:

    标签: excel vba userform


    【解决方案1】:

    是的,我之前也遇到过同样的问题。出于某种原因,用户窗体使用设计属性而不是在运行时分配的属性进行初始化。由于相应单元格中已经存在持久数据,您可以尝试对“Form_initialize”事件执行设计估计用户表单分配。希望有效。

    【讨论】:

    • 可行,但现在的问题是我从另一个表单调用相同的表单,该表单用于调用已存储的不同客户 ID 的设计估算数据......因此使用此解决方案我无法分配表单初始化时文本框的不同值。
    • “出于某种原因”?当您初始化一个新实例时,它会从运行时编译的主实例加载(即设计属性)。如果您不想要这种行为,请考虑使用Hide 而不是Unload
    猜你喜欢
    • 2013-01-09
    • 1970-01-01
    • 2012-01-03
    • 1970-01-01
    • 1970-01-01
    • 2019-03-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多