You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Access表单模块代码编辑需求:实现行操作与换行清理

表单模块代码编辑需求与问题

我在开发工具时需要给表单模块执行文本添加、替换和删除操作,标准模块里实现这些功能相对简单,但表单模块的限制更多。

目前我尝试编写一个清理代码的过程,目的是移除超过2个的连续换行。我的尝试中,.DeleteLines方法在表单模块里无法生效;另一个思路是把模块的全部文本读取到字符串变量中,替换所有多余换行后覆盖现有代码,也没能实现。

我需要一个能在表单模块中完成以下操作的函数:

  • 删除行
  • 替换行
  • 插入行

我根据网络资源修改了一个函数,但它在表单模块中偶尔会报错,代码如下:

'function to delete extra line breaks
Function fnzzzModuleFindStringOptionalReplace(vrModuleName As String, vrStringToFind As String, Optional vrNewString As Variant, Optional vrDeleteIfFound As Boolean = False, _
    Optional vrInsertAfter As Boolean = False, Optional vrFindWholeWord As Boolean = False, Optional vrMatchCase As Boolean = False, Optional vrPatternSearch As Boolean = False) As Boolean

    Dim vrMdl As Object
    Dim vrSLine As Long, vrELine As Long, vrSCol As Long, vrECol As Long
    Dim vrLine As String, vrLineLen As Long, vrBefore As Long, vrAfter As Long
    Dim vrLeft As String, vrRight As String, vrNewLine As String

    Set vrMdl = fnzzzResolveModuleOrError(vrModuleName)

    vrSLine = 1
    vrSCol = 1
    vrELine = vrMdl.CountOfLines
    vrECol = 200

    If vrMdl.Find(vrStringToFind, vrSLine, vrSCol, vrELine, vrECol, vrFindWholeWord, vrMatchCase, vrPatternSearch) = True Then
        vrLine = vrMdl.Lines(vrSLine, Abs(vrELine - vrSLine) + 1)
        vrLineLen = Len(vrLine)
        vrBefore = vrSCol - 1
        vrAfter = vrLineLen - CInt(vrECol - 1)
        vrLeft = Left$(vrLine, vrBefore)
        vrRight = Right$(vrLine, vrAfter)

        If vrDeleteIfFound = True Then
            vrNewLine = vrLeft & vrRight
            vrMdl.ReplaceLine vrSLine, vrNewLine
        ElseIf vrInsertAfter = True And Not IsMissing(vrNewString) Then
            vrMdl.InsertLines vrSLine + 1, vrNewString
        ElseIf Not IsMissing(vrNewString) Then
            vrNewLine = vrLeft & vrNewString & vrRight
            vrMdl.ReplaceLine vrSLine, vrNewLine
        End If

        fnzzzModuleFindStringOptionalReplace = True
    Else
        fnzzzModuleFindStringOptionalReplace = False
    End If

    Set vrMdl = Nothing
End Function

以下是用于删除多余换行的函数:

'function to delete extra line breaks
Function fnzzzModuleFixLineBreaks(vrModuleName As String) As Boolean
    Dim vrMdl As Object
    Dim vrI As Long
    Dim vrL1 As String, vrL2 As String, vrL3 As String

    DoCmd.OpenModule vrModuleName

    Set vrMdl = Modules(vrModuleName)

    vrI = 1
    Do While vrI <= vrMdl.CountOfLines - 2
        vrL1 = Trim(vrMdl.Lines(vrI, 1))
        vrL2 = Trim(vrMdl.Lines(vrI + 1, 1))
        vrL3 = Trim(vrMdl.Lines(vrI + 2, 1))

        If vrL1 = "" And vrL2 = "" And vrL3 = "" Then
            vrMdl.DeleteLines vrI + 2, 1
        Else
            vrI = vrI + 1
        End If
    Loop

    fnzzzModuleFixLineBreaks = True
End Function

内容的提问来源于stack exchange,提问作者Nata

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.12 07:14:52