MS Access VBA - 打开表单并从计算文本框中获取值

问题描述 投票:0回答:1

这是一个更复杂的项目,但我设法将问题范围缩小到以下情况。

在访问表单 (

fSearch
) 中,有一个按钮 (
bCheck
)。
bCheck_Click
事件 代码旨在打开现有的 Excel 文件并填写特定值。
我可以从另一种形式 (
tSumAmount
) 的计算文本框 (
fMain
) 获取该值。

所以首先我打开

fMain
,然后打开 Excel 文件,然后我尝试将
tSumAmount
的值复制到 Excel 文件中,但从未发生过。

使用

Debug.Print
我可以看到,在处理该值之前,
tSumAmount
仍然没有被计算。
如果代码被中断,则会计算,如果代码继续 (F5),则会正确复制该值。

似乎直到

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
vba ms-access ms-access-2016
1个回答
0
投票

根据@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
© www.soinside.com 2019 - 2024. All rights reserved.