使用VBA打开并运行用户表单

时间:2016-08-16 09:03:37

标签: excel vba excel-vba macros

我在excel文件上有一个名为" userform":

的用户表单
Private Sub add1_Change()

End Sub

Private Sub add2_Change()


End Sub

Private Sub Calc_Click()


Result.Value = Val(add1.Value) + Val(add2.Value)



End Sub

此userform从用户获取值并将它们相加并在文本框中显示结果。

我想在名为" input"的另一个工作簿中创建一个新宏。此工作簿中的宏应打开userform工作簿,在文本框add1和add2中输入值,然后运行userform计算按钮。

到目前为止我尝试过的事情:

  • 设置add1.value以从单元格A1中提取值,对add2.value类似地提取值。然后我在输入工作簿上创建了一个宏来更改单元格A1和A2中的值。这里的问题是我不知道如何强制excel打开用户表单并点击计算。

理想情况下,我宁愿不通过我所做的事情。我想设置一个宏来打开用户表单,输入数据并点击计算然后关闭用户表单 - 而不是编辑用户表单本身

关于如何解决这个问题的任何想法,我们都非常感激。

1 个答案:

答案 0 :(得分:0)

你可以用这种方式在UserForm中添加2个值(它与你现在尝试的稍微不同):

您使用当前代码打开UserForm

Sub userform()
    Workbooks.Open (ThisWorkbook.Path & "\userform.xlsm")
    Application.Run "userform.xlsm!Calc"
End Sub

如上所示,您无法指定userform.xlsm Workbook

中会出现的任何值

以下是您在Initialize

的子UserForm中输入的代码
Private Sub UserForm_Initialize()

    Dim wb As Workbook
    Dim ws As Worksheet

    Set wb = Workbooks("input.xlsx")
    Set ws = wb.Worksheets("Input")

    Dim i as Integer
    Dim k as Integer

    UserForm.add1.Value = ws.Range("A2").Value
    UserForm.add2.Value = ws.Range("B2").value
    UserForm.calc.Value = val(UserForm.add1.Value) + val(UserForm.add2.Value)

End Sub

如上所示calc更改为Textbox,因此您无需点击加载UserForm时直接完成的按钮。

您还可以使用Label代替Textbox

然后代码将变为:

UserForm.calc.Caption = Str( val(UserForm.add1.Value) + val(UserForm.add2.Value) )