使用" IF" a" with"声明

时间:2017-08-07 17:50:08

标签: vba access-vba

我正在尝试与"设置"在Access中的vba代码中的语句,但是" With"引用可能会改变。有没有办法做到这一点,而无需重写"中的代码"声明两次? 好像我可以这样做:

If FooVarible = true then
    with forms!form1
else
    with forms!form2!subForm1
endif
    'have code here
end with

但是无法编译。

2 个答案:

答案 0 :(得分:5)

使用变量:

Dim frm as Object
If FooVarible = true then
    Set frm = forms!form1
else
    set frm = forms!form2!subform1.form
endif
With frm
    'have code here
end with

答案 1 :(得分:3)

如果FooVariable可以是预编译器常量,那么您可以这样做:

#Const FooVariable = False

Sub Test()

#If FooVariable Then
    With Forms!Form1
#Else
    With Forms!Form2
#End If
        'with block contents
    End With

End Sub

可能不是你追求的,但很高兴知道。编译完成后,如果FooVariableTrue

,VBA才会看到此内容
Sub Test()

    With Forms!Form1
        'with block contents
    End With

End Sub

如果FooVariableFalse,那么这就是

Sub Test()

    With Forms!Form2
        'with block contents
    End With

End Sub

请注意,编译器永远不会看到不完整的With块。