2016-06-14 83 views
0

我有以下形式,有三个子窗体:参照子窗体记录在访问

enter image description here

右上角的按钮打开一个窗体在Excel中。我希望该用户表单已经有一些从这些子表单中选择了值。但是,我无法引用VBA代码中子表单中的记录。我已经成功地从主窗体中传递值,例如名称等,但不是来自子窗体的值。代码访问:

Option Compare Database 

Private Sub Toggle159_Click() 
    Dim abc As String 
    abc = Me.CompanyName 

    Dim xlApp As Object 'Excel.Application, xlWB As Excel.Workbook 
    Dim xlWB As Object 
    Set xlApp = CreateObject("Excel.Application") 
    Set xlWB = xlApp.Workbooks.Open("C:\NA\eb\quotegenv2.xlsm") ' specify file 
    xlApp.Visible = True 
    xlApp.Run "Module3.showFormWithValues", abc 


End Sub 

在上面的代码中,CompanyName是对mainform的控件。此代码运行良好,但我试图使用'me.subformname.form.controlname'引用子表单中的项目,但控件名称未显示在建议中。

代码在Excel中的模块:

' placed in code Module3 
    Sub showFormWithValues(txt1 As String) 
     With UserForm1 

      .ClientName.Text = txt1 

     End With 
    UserForm1.Show 
    End Sub 

任何帮助表示赞赏。

回答

0

在表单打开之前,您已尝试设置ClientName

使用模块3顶部的全局变量共享showFormWithValues和表单之间的数据。

在的Module3第一过程作为公共变量作为下面的例子之前的顶部示出了: -

Option Explicit 

Public StrCN As String 

Sub showFormWithValues(txt1 As String) 
    ... 
End Eub 

UserForm1添加(或更新,如果它已经存在)执行以下操作: -

Private Sub UserForm_Activate() 
Me.ClientName.Text = Module3.StrCN 
End Sub 
+0

提供的代码工作正常,因为它引用了主窗体上的项目。我遇到的困难是指子表单中的项目。 – zkhan

+0

但是你没有显示你失败的地方?或者错过了什么?像你做客户名称一样传递子表单选项?或者使用访问权将它们放入Excel工作簿中的工作表中,然后在Excel中使用它? –

+0

无法引用子窗体中的项目的语法。你可以更具体地了解如何在access vba中做到这一点? – zkhan