我有一些 VBA 代码,其中行很长并且想将其发送到某个地方,其中(不是 100% 严格)限制 80 个字符在线。
_
VBA 允许通过在“ ”之前放置“”来创建中断代码行enter
。(显然,这在字符串中不起作用,必须将其拆分为子字符串并用“ &
”连接。如下所示。)
是否有一些工具可以自动将“换行符”添加到代码中?
或者也许是正则表达式?
我试图搜索,但没有有效的结果。
原始代码:
'Some looooooong comment Lorem ipsum dolor sit amet, consectetur adipiscing elit. Ut a volutpat dolor. In risus odio, pharetra a arcu in, efficitur ornare lectus. Maecenas non aliquet leo. Praesent luctus blandit magna, et sagittis ex porta et.
MsgBox("Some text in MsgBox. Donec vulputate eros ac nulla hendrerit auctor. In hac habitasse platea dictumst. Proin fermentum augue elit, eget consequat massa mattis et. Integer semper imperdiet diam sit amet malesuada.", 64, "Title of MsgBox")
'Another comment now with link to doc. https://example.com/?bs64=SWYgeW91IGFyZSBzbWFydCBlbm91Z2ggdG8gZGVjb2RlLCB5b3UgbXVzdCBkZWZpbml0ZWx5IHdhdGNoIHRoaXM6IGh0dHBzOi8vd3d3LnlvdXR1YmUuY29tL3dhdGNoP3Y9b0hnNVNKWVJIQTA=
想要的代码:
'Some looooooong comment Lorem ipsum dolor sit amet, consectetur adipiscing
'elit. Ut a volutpat dolor. In risus odio, pharetra a arcu in, efficitur
'ornare lectus. Maecenas non aliquet leo. Praesent luctus blandit magna, et
'sagittis ex porta et.
MsgBox("Some text in MsgBox. Donec vulputate eros ac nulla hendrerit auctor." _
& "In hac habitasse platea dictumst. Proin fermentum augue elit, eget " _
& "consequat massa mattis et. Integer semper imperdiet diam sit amet" _
& " malesuada.", 64, "Title of MsgBox")
'Another comment now with link to doc.
'https://example.com/?bs64=SWYgeW91IGFyZSBzbWFydCBlbm91Z2ggdG8gZGVjb2RlLCB5b3UgbXVzdCBkZWZpbml0ZWx5IHdhdGNoIHRoaXM6IGh0dHBzOi8vd3d3LnlvdXR1YmUuY29tL3dhdGNoP3Y9b0hnNVNKWVJIQTA=
谢谢。
PS:我正在使用记事本++
也许您可以使用两个正则表达式搜索和替换功能?一个只处理带有注释的行,另一个将处理带有 MsgBox 的行。这将使常规 VBA 不受影响。第一种模式可能是:
替换为
\n'
,查看在线演示第二个:
替换为
" _\n & "
,查看在线演示模式原理的细分:
^
- 起跑线锚。[^']
- 匹配除文字单引号外的任何字符。.*
- 匹配除换行符以外的任何字符零次或多次。(*SKIP)(*F)
- 跳过/失败组合以消耗匹配的模式,但稍后将其否定。|
- 交替/或。(?:
- 打开第一个非捕获组。(?:
- 打开第二个非捕获组。.{1,70}|.{71,140}|.{141,210}|.{211,280}
- 交替匹配除换行符以外的任何字符 x 次。如果您的字符串值更长,您可以添加更多。)
- 关闭嵌套的第二个非捕获组。|
- 交替/或。\G(?!^)
- 在上一个匹配结束时断言位置并带有负前瞻,以防止字符串位置的开始。)
- 关闭第一个非捕获组。\S+
- 匹配至少 1 个非空白字符。\K
- 重置之前报告的比赛的起点。\h
- 匹配水平空白字符。(?=.{25,}$)
- 正向前瞻以确保在结束字符串 ancor 之前至少还有 25 个字符(以防止出现小的结尾部分)。而上述模式适用于作为注释的行。与第二个模式的唯一区别是它使用负前瞻来确保该行不以文字'MsgBox(')开头。
我的最终结果: