2016-06-14 154 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