假设我们有两个表单:Frm_Dairy 和 Frm_Bakery,每个表单都有一个名为 Sales 的字段,但字段名称前缀根据表单名称有所不同,例如:Frm_Dairy.Dairy_Sales
或 Frm_Bakery.Bakery_Sales
。
我们需要编写一段代码,将活动表单中的 Sales 字段值赋给变量 M_Sales
。具体来说,如果当前活动的是 Frm_Dairy 表单,则代码应为:M_Sales = Frm_Dairy.Dairy_Sales
。
为了实现这一点,我们首先需要确定哪个表单是活动的。可以通过检查表单是否已加载来实现这一目标:
If CurrentProject.AllForms("Frm_Dairy").IsLoaded Then
M_Form = "Dairy"
ElseIf CurrentProject.AllForms("Frm_Bakery").IsLoaded Then
M_Form = "Bakery"
End If
接下来,我们可以使用字符串拼接的方式构造要执行的代码,并将其存储在一个变量中:
M_Code = "M_Sales = Frm_" & M_Form & "." & M_Form & "_Sales"
然而,直接执行字符串形式的代码并不是最佳实践。更好的方法是使用 VBA 提供的动态引用功能,以确保代码的安全性和可维护性。以下是几种推荐的方法:
- 使用
Screen.ActiveForm
属性(假设活动表单具有焦点):
Debug.Print Screen.ActiveForm.Controls(Screen.ActiveForm.Name & "_Sales")
传递表单名称作为过程参数:Function GetSalesValue(strForm As String) As Variant
GetSalesValue = Forms(strForm).Controls(strForm & "_Sales")
End Function
' 调用函数
Debug.Print GetSalesValue(M_Form)
简化控件命名:如果控件名称不包含表单前缀,代码会更加简洁明了。通过上述方法,您可以灵活地引用不同表单中的字段,并确保代码的健壮性和易读性。感谢您的阅读,希望这些技巧对您有所帮助!