这是一个更复杂的项目,但我设法将问题范围缩小到以下情况。
在访问表单 (
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