使用一个用户表单中的数据来计算另一用户表单中的公式

时间:2018-09-13 10:19:35

标签: vba excel-vba

vba相当新,并且一直在尝试弄清楚如何使用从我的第一个用户窗体到第二个用户窗体的数据。

我们称它们为userform1和userform2

因此,在userform1中,用户将输入a,b,c和d的数据。单击“确定”后,userform2将打开:

Private Sub OK_Click()
     l = cdbl(a.value)+cdbl(b.value) 
     w = cdbl(c.value)+cdbl(d.value)

     userform1.hide
     userform2.show
End Sub

在userform2中,我需要a和b的值(由用户在userform1中输入)来计算x和y:

Private Sub OK_Click()
     x = cdbl(a.value)+cdbl(d.value) 
     y = cdbl(b.value)+cdbl(c.value)
End Sub

试图将b c d l w x和y分别放置在模块中并在Public中进行设置,但代码仍然不起作用。错误“必需的对象”

非常感谢。

2 个答案:

答案 0 :(得分:0)

一个简单的也许不是最好的方法是在类模块中声明变量a和b。更好的方法可能是通过属性传递它们。

Userform1中的代码

Option Explicit

Public a As Double
Public b As Double

Private Sub CommandButton1_Click()
    a = TextBox1.Value
    b = TextBox2.Value
    Me.Hide
End Sub

用户窗体2中的代码

Option Explicit

Public x As Double
Public y As Double

Private Sub CommandButton1_Click()
    TextBox1.Value = x + y
End Sub

您可以像这样测试它

Sub Demo()

Dim f1 As New UserForm1
Dim f2 As New UserForm2

    f1.Show
    f2.x = f1.a
    f2.y = f1.b
    f2.Show

End Sub

PS不检查或忽略文本框中输入的值是否真的有效。

答案 1 :(得分:0)

一个粗略的方法

1)声明一些Public类型的Double变量

因此将其置于项目中您选择的任何模块的顶部

   Public aValue As Double, bValue As Double, cValue As Double, dValue As Double

2)如下更改代码

UserForm1

    Option Explicit

    Private Sub OK_Click()
        Dim l As Double, w As Double

        aValue = CDbl(a.Value)
        bValue = CDbl(b.Value)
        cValue = CDbl(c.Value)
        dValue = CDbl(d.Value)

        l = aValue + bValue
        w = cValue + dValue

        Me.Hide
        With UserForm2
            .Show
        End With
    End Sub

UserForm2

    Private Sub OK_Click()
        Dim x As Double, y As Double

         x = aValue + dValue
         y = bValue + cValue
    End Sub

等等...