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中进行设置,但代码仍然不起作用。错误“必需的对象”
非常感谢。
答案 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
等等...