我在VBA中收到了Access 2010的代码,并且有两个单独的子语句包含相同的代码,如下所示:
Private Sub Test_Type_AfterUpdate()
If Not IsNull(Me.Test_Type.Value) Then
Me.TestNameID.Value = frmTestNameIDSmallToBigUpdate
Me.Test.Value = frmTestSmallToMedUpdate
End If
End Sub
Private Sub Test_Type_Change()
If Not IsNull(Me.Test_Type.Value) Then
Me.TestNameID.Value = frmTestNameIDSmallToBigUpdate
Me.Test.Value = frmTestSmallToMedUpdate
End If
End Sub
其他Private Sub语句也包含相同的编码,但在If Not IsNull之后包含不同的变量。我是VBA的新手,但有使用Python和C#编程的经验,有没有办法将这些语句组合成一个语句。
由于
答案 0 :(得分:3)
是。创建第三个私有子以处理Test_Type
个事件。
Private Sub HandleTestTypeEvent(object)
If Not IsNull(object.Value) Then
Me.TestNameID.Value = frmTestNameIDSmallToBigUpdate
Me.Test.Value = frmTestSmallToMedUpdate
End If
End Sub
并从现有的活动程序中调用它。
Private Sub Test_Type_AfterUpdate()
HandleTestTypeEvent Me.TestType
End Sub
Private Sub Test_Type_Change()
HandleTestTypeEvent Me.TestType
End Sub
确保正确输入参数并为其指定一个有意义的名称。
如果你感觉真的蛙,你可以看看这个。 Overriding all Access form control AfterUpdate methods
答案 1 :(得分:0)
为了更好的可维护性,将代码重构为从两个事件子调用的单个子代码,如下所示:
Private Sub Set_Test_NameID_and_Value
If Not IsNull(Me.Test_Type.Value) Then
Me.TestNameID.Value = frmTestNameIDSmallToBigUpdate
Me.Test.Value = frmTestSmallToMedUpdate
End If
End Sub
Private Sub Test_Type_AfterUpdate()
Call Set_Test_NameID_and_Value()
End Sub
Private Sub Test_Type_Change()
Call Set_Test_NameID_and_Value()
End Sub