Forms 在MS Access中访问窗体和控件时使用变量
我有一个MS Access项目,我想包括一些数据格式。我已经知道如何进行格式化,但是由于有很多控件和窗体,我很难重新键入代码并输入活动窗体和控件的名称 是否可以在失焦事件上设置当前窗体和活动控件 我试着用这段代码格式化SettAmount文本框,效果很好Forms 在MS Access中访问窗体和控件时使用变量,forms,variables,ms-access,controls,Forms,Variables,Ms Access,Controls,我有一个MS Access项目,我想包括一些数据格式。我已经知道如何进行格式化,但是由于有很多控件和窗体,我很难重新键入代码并输入活动窗体和控件的名称 是否可以在失焦事件上设置当前窗体和活动控件 我试着用这段代码格式化SettAmount文本框,效果很好 Dim varEnteredValue As Variant varEnteredValue = Forms!dbfrmCrew.SubFrmCrew.Form.SettAmount.Value If IsNumeric(varEntered
Dim varEnteredValue As Variant
varEnteredValue = Forms!dbfrmCrew.SubFrmCrew.Form.SettAmount.Value
If IsNumeric(varEnteredValue) = True Then
Forms!dbfrmCrew.SubFrmCrew.Form.SettAmount.Format = "#,##0.00"
Else
Forms!dbfrmCrew.SubFrmCrew.Form.SettAmount.Format = ">"
End If
我可以获得该函数的所有窗体和控件的名称,但无法将其传递给变量
Dim ctlname, frmname, subfrmname As String
Public Function FormatValue() As Integer
If TypeName(Screen.ActiveForm.ActiveControl) = "SubForm" Then
ctlname = Screen.ActiveForm.ActiveControl.Form.ActiveControl.Name
frmname = Screen.ActiveForm.Name
subfrmname = Screen.ActiveForm.ActiveControl.Name
Else
我尝试使用变量获取控件的值:
varEnteredValue = Forms!frmname.subfrmname.Form.ctlname.Value
但是有一个错误,MS Access找不到表单“frmname”
希望那里的任何人都能帮助我,谢谢 是的
使用表单集合之类的变量
Dim nameOfForm as String
Dim frm as Form
nameOfForm = "MyFormName"
Set frm = Forms(NameOfForm)
Dim nameOfControl as String
Dim ctrl as Control
nameOfControl = "MyControlName"
Set ctrl = frm.Controls(nameOfControl)
或控件集合
Dim nameOfForm as String
Dim frm as Form
nameOfForm = "MyFormName"
Set frm = Forms(NameOfForm)
Dim nameOfControl as String
Dim ctrl as Control
nameOfControl = "MyControlName"
Set ctrl = frm.Controls(nameOfControl)
您可以使用frm.name或ctrl.name取回名称
请注意,您必须对特定表单使用控件,并且加载到表单中的唯一表单是主动加载的表单。这包括设计视图中的表单。在设计视图中打开的这些表单可能无法访问其所有属性
要继续编辑,请执行以下操作:
您正试图将表单名称字符串用作表单对象本身。您需要调用表单集合中按名称存储的项
varEnteredValue = Forms(frmname).Controls(subfrmname).Form.Controls(ctlname).Value
不过,在将它们用于这样一个大的长链之前,检查每一个现有的产品会更安全。比如:
Dim mainForm as Form
Dim yourSubForm as Subform
Dim yourControl as Control
On Error Resume Next
Set mainForm = Forms(frmname)
If Err.Number <> 0 then
Set yourSubForm = mainForm.Controls(subfrmname)
If Err.Number <> 0 then
Set yourControl = yourSubForm .Form.Controls(ctlname)
If Err.Number <> 0 then
Debug.Print yourControl.Value
Else
MsgBox "Cannot find" & subfrmname
End If
Else
MsgBox "Cannot find" & subfrmname
End If
Else
MsgBox "Cannot find" & frmname
End If
我把表格改成了表格。我还编辑了我上述问题的最后一部分。但我还是做不好。是否无法使用变量访问窗体的控件?thnks!