在访问表单 (
fSearch
) 中,有一个按钮 (bCheck
)。 bCheck_Click
事件代码旨在打开Excel文件以填充特定值。tSumAmount
) 的计算文本框 (fMain
) 获取该值。
首先我打开
fMain
,然后打开 Excel 文件,然后尝试将 tSumAmount
的值复制到 Excel 文件中,但从未发生过。
使用
Debug.Print
我可以看到,在复制值之前,tSumAmount
尚未计算。似乎直到
tSumAmount
结束才计算bCheck_Click
。这很令人困惑,因为 fMain
的 Form_Load
事件首先被触发,并且在 bCheck_Click
尝试复制值之前有足够的时间完成。
计算文本框什么时候计算?
我需要这个以某种方式工作。
Sub bCheck_Click()
Dim oXl As Excel.Application
Dim oWb As Excel.Workbook
Search_It
Set oXl = New Excel.Application
oXl.DisplayAlerts = False
oXl.Visible = True
Set oWb = oXl.Workbooks.Open("full_path_of_excel_file")
'-> At this point tSumAmount has not been computed yet. Tried Sleep, still no luck.
Debug.Print "(" & Forms("fMain").tSumAmount & ")" '-> output: ()
With oWb.Worksheets(1)
.Range("A1") = Forms("fMain").tSumAmount
End With
End Sub
Sub Search_It()
'do stuff
DoCmd.OpenForm "fMain"
End Sub
根据@FunThomas的提示,工作代码如下:
Sub bCheck_Click()
Dim oXl As Excel.Application
Dim oWb As Excel.Workbook
Search_It
Set oXl = New Excel.Application
oXl.DisplayAlerts = False
oXl.Visible = True
Set oWb = oXl.Workbooks.Open("full_path_of_excel_file")
Forms("fMain").Recalc
With oWb.Worksheets(1)
.Range("A1") = Forms("fMain").tSumAmount
End With
End Sub
Sub Search_It()
'do stuff
DoCmd.OpenForm "fMain"
End Sub