LibreCalc的StarBasic宏中引号内续行符"_"无效该如何转义
StarBasic的续行符 _是语法级的行接续标识,不能放在双引号包裹的字符串字面量内部,不存在对引号内续行符的转义方法——放在引号内的 _会被直接识别为字符串内容的一部分,不会触发代码换行逻辑。
正确实现长字符串代码换行的方法
将长字符串拆分为多个独立的短字符串段,每段单独用双引号包裹,段之间用字符串拼接符&连接,再在&后加续行符 _即可,修改后的常量定义如下:
Const SCells = "B17:C28,E17:G28,L17:O28,T17:V28,AA17:AE28,AN17:AR28," & _ "BB17:BD28,BO17:BS28,BY17:CB28,CG17:CI28,CS17:CW28,DB17:DF28,DL17:DN28," & _ "DU17:DX28,EF17:EK28,ET17:EV28,FA17:FD28,FJ17:FL28,FV17:FZ28,GD17:GF28," & _ "GM17:GO28"
如果是定义普通变量而非常量,也可以用逐行追加的写法,无需使用续行符,可读性更高:
Dim SCells As String SCells = "B17:C28,E17:G28,L17:O28,T17:V28,AA17:AE28,AN17:AR28," SCells = SCells & "BB17:BD28,BO17:BS28,BY17:CB28,CG17:CI28,CS17:CW28,DB17:DF28,DL17:DN28," SCells = SCells & "DU17:DX28,EF17:EK28,ET17:EV28,FA17:FD28,FJ17:FL28,FV17:FZ28,GD17:GF28," SCells = SCells & "GM17:GO28"
修改后完整可运行代码
Const SCells = "B17:C28,E17:G28,L17:O28,T17:V28,AA17:AE28,AN17:AR28," & _ "BB17:BD28,BO17:BS28,BY17:CB28,CG17:CI28,CS17:CW28,DB17:DF28,DL17:DN28," & _ "DU17:DX28,EF17:EK28,ET17:EV28,FA17:FD28,FJ17:FL28,FV17:FZ28,GD17:GF28," & _ "GM17:GO28" splitCells = Split(SCells,",") Sub Cells_range Dim i As Integer For i = 0 To 2 Step 1 Print splitCells(i) Next i End Sub
运行后会正常输出前3个单元格区域的值。
内容的提问来源于stack exchange,提问作者Estatistics
相关产品推荐
相关产品推荐

