【问题标题】:How to break vba code into multiple lines?如何将vba代码分成多行?
【发布时间】:2019-12-20 06:29:47
【问题描述】:

我有一行代码(如下),我想换行。我试图插入 (_) 但没有任何成功。有什么建议吗?

DoCmd.OpenForm "qrysearch", acNormal, "", "([Firm]=[Forms]![search]![cmb_firm] Or IsNull([Forms]![search]![cmb_firm]))And ([City]=[Forms]![search]![cmb_city] Or IsNull([Forms]![search]![cmb_city]))And ([Region]=[Forms]![search]![cmb_region] Or IsNull([Forms]![search]![cmb_region]))And ([Primary Contact First Name]=[Forms]![search]![cmb_firstname] Or IsNull([Forms]![search]![cmb_firstname]))And ([Major Corridor]=[Forms]![search]![cmb_majorcorridor] Or IsNull([Forms]![search]![cmb_majorcorridor]))And ([Minor Corridor]=[Forms]![search]![cmb_minorcorridor] Or IsNull([Forms]![search]![cmb_minorcorridor]))And ([BayAreCommuterBenefitType]=[Forms]![search]![cmb_commuterbenefits] Or IsNull([Forms]![search]![cmb_commuterbenefits]))And ([Bike Parking]=[Forms]![search]![cmb_bikeparking] Or IsNull([Forms]![search]![cmb_bikeparking]))And ([Green Business Program]=[Forms]![search]![cmb_greenbusiness] Or IsNull([Forms]![search]![cmb_greenbusiness]))", , acNormal

【问题讨论】:

  • 用变量连接字符串 - sMyString = sMyString & " more stuff "
  • 请注意,物理代码行的最大长度不能超过 1024 个字符:该行是 960 个字符长!结束通话!

标签: vba ms-access


【解决方案1】:

将构建标准字符串和调用它的关注点分开,然后使用_ 行继续和& 字符串连接运算符使海量字符串文字有点可读/可维护-Rubberduck 的Smart Concat 功能可以真的帮助:你需要做的就是在你想分割字符串的任何地方点击Enter,最后得到类似的东西这个:

Const criteria As String = "([Firm]=[Forms]![search]![cmb_firm] Or IsNull([Forms]![search]![cmb_firm])) " & _
    "And ([City]=[Forms]![search]![cmb_city] Or IsNull([Forms]![search]![cmb_city])) " & _ 
    "And ([Region]=[Forms]![search]![cmb_region] Or IsNull([Forms]![search]![cmb_region])) " & _
    "And ([Primary Contact First Name]=[Forms]![search]![cmb_firstname] Or IsNull([Forms]![search]![cmb_firstname])) " & _
    "And ([Major Corridor]=[Forms]![search]![cmb_majorcorridor] Or IsNull([Forms]![search]![cmb_majorcorridor])) " & _
    "And ([Minor Corridor]=[Forms]![search]![cmb_minorcorridor] Or IsNull([Forms]![search]![cmb_minorcorridor])) " & _
    "And ([BayAreCommuterBenefitType]=[Forms]![search]![cmb_commuterbenefits] Or IsNull([Forms]![search]![cmb_commuterbenefits])) " & _
    "And ([Bike Parking]=[Forms]![search]![cmb_bikeparking] Or IsNull([Forms]![search]![cmb_bikeparking])) " & _
    "And ([Green Business Program]=[Forms]![search]![cmb_greenbusiness] Or IsNull([Forms]![search]![cmb_greenbusiness]))"

DoCmd.OpenForm "qrysearch", acNormal, "", criteria, , acNormal

也就是说,考虑使用 命名参数 而不是 , , 跳过可选参数:

DoCmd.OpenForm "qrysearch", acNormal, "", criteria, WindowMode:=acWindowNormal

请注意,WindowMode 参数需要一个 AcWindowMode 值,但您给它的是一个 AcFormView 值 - 幸运的是两者都有一个基础值 0 并且可以简单地省略,因为它们都是默认值,但仍然...使用错误的枚举会导致...有趣的错误。

所以OpenForm 调用可以简化为:

DoCmd.OpenForm "qrysearch", WhereCondition:=criteria

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-01-06
    • 1970-01-01
    • 2013-09-06
    • 2019-06-21
    • 2013-10-19
    • 1970-01-01
    • 2023-02-15
    相关资源
    最近更新 更多