【发布时间】:2020-08-03 00:35:31
【问题描述】:
我需要定义一个全局变量x,并根据用户的选择为x赋值,然后在两个单元格N2和J2中写入相同的值。 N2 发生在用户表单内,而 J2 发生在用户表单外。 我首先希望有一个弹出窗口供用户选择值 0.01 或 0.05。所以我使用用户表单来做到这一点。但是我不想直接运行这个用户表单,而是想在一个名为 macro2() 的 vba 模块中调用用户表单,见下文。在 macro2() 中,我首先调用用户窗体“user1”,弹出窗口将显示允许用户选择 0.01 或 0.05。如果我们选择 0.01,那么全局变量“x”的值为 0.01。然后当我们在单元格 N2 中写入变量 x 时,N2 的值将是 0.01(这很好)。但是在用户窗体退出并继续执行macro2() 的其余部分后,单元格J2 是0 而不是0.01,即使x 应该具有值0.01。
这很有趣,因为当我们第二次选择 0.05 时,N2 将具有值 0.05,但 J2 将携带旧的 x 值 0.01。谁能帮我解决这个问题?我本质上需要 N2 和 J2 携带相同的 x 值,所以我可以在以后的代码中调用 x 来处理许多其他事情。谢谢!
我的模块/宏代码如下所示:
Global x As Double
Sub Macro2()
Dim frm As user1
user1.Show vbModeless
Range("J2").Select
ActiveCell.FormulaR1C1 = x
End Sub
“user1”用户表单代码为:
Private Sub OptionButton1_Click()
Range("N2").Select
x = 0.01
ActiveCell.FormulaR1C1 = x
Me.Hide
End Sub
Private Sub OptionButton2_Click()
Range("N2").Select
x = 0.05
ActiveCell.FormulaR1C1 = x
Me.Hide
End Sub
Private Sub UserForm_Click()
ActiveCell.FormulaR1C1 = x
End Sub
【问题讨论】:
-
Range("J2")更新是否必须在用户窗体之外进行,还是可以与Range("N2")同时写入?