当前位置: 首页 > news >正文

vs动态网站建设新闻头条最新消息国家大事

vs动态网站建设,新闻头条最新消息国家大事,php 行业网站,网站制作器Office自带的VBE在编辑代码时,没有自动完成代码缩进的功能,而我们在网上找到的VBA代码,经常没有实现良好的自动缩进,复制到VBE后,可读性较差。本文介绍的宏,通过使用vbscript.regexp对象,利用正…

Office自带的VBE在编辑代码时,没有自动完成代码缩进的功能,而我们在网上找到的VBA代码,经常没有实现良好的自动缩进,复制到VBE后,可读性较差。本文介绍的宏,通过使用vbscript.regexp对象,利用正则表达式匹配VBA 代码块中开始和结束关键字,完成缩进量的计算,从而实现VBA代码的格式化。
要使用vbscript.regexp对象,需要用过VBE的“工具”菜单的“引用”命令引入Microsoft VBScript Regular Expressions 5.5这个库。引入这个库后,我们构筑三个正则表达式,分别匹配VBA代码块的开始记号、结束记号及中继记号。例如一个If-Else-End If代码块,If就是这个代码块的开始记号,遇到了开始记号,下面的行就需要增加一个缩进单位;Else就是这个代码块的中继记号,遇到中继记号,不影响后续行的缩进,但本行的缩进需要减少一个单位;End If就是这个代码块的结束记号,遇到结束记号,本行和后续各行的缩进量就要减少一个单位。此外还有一个特殊情况,就是换行连接符“_”,其后续第一行也宜增加一个缩进量,如果下一行仍然太长被分行,则再下面一行不用继续增加缩进。
宏代码如下,运行宏前需先选择复制到Word文档中的整个代码块。如果所选择的代码中包含的所有代码块结构完整,则所选择的代码块被替换为缩进规范的代码。如运行宏后发现代码缩进不正确,则代码中肯定有错误,存在结构不完整的代码块。

Sub VBA代码缩进()Dim aPara As ParagraphDim CumulativeIndent As Integer, currParaIndent%, i%Dim sTmp As String, sResult$Dim regRight As RegExp, regLeft As RegExp, regMiddle As RegExpSet regRight = CreateObject("vbscript.regexp")Set regLeft = CreateObject("vbscript.regexp")Set regMiddle = CreateObject("vbscript.regexp")'regLeft匹配需要增加后续段落左缩进的段落,即段落开头为代码块开始记号的段落regLeft.Pattern = "^(for|while|if|#if|with|do|select|((public|private)\s+)*(sub|function))\s"regLeft.IgnoreCase = True'regRight匹配需要减少本段及后续段落左缩进的段落,即段落开头为代码块结束记号的段落regRight.Pattern = "^(end\s|#end\s|loop|next|wend)"regRight.IgnoreCase = True'regMiddle匹配对前后段落缩进没有影响,但需要减少本段左缩进的段落,即段落开头为中继记号的段落regMiddle.Pattern = "^(elseif|else|#elseif|#else|case)\s"regMiddle.IgnoreCase = True'将所选择的代码原有不规范的缩进全部删除,即替换掉各段前导空格或制表符(^t),以免影响最终缩进With Selection.Find.MatchWildcards = True.Execute FindText:="^13[ ^t]{1,}", _ReplaceWith:="^p", Replace:=wdReplaceAllEnd With'记录一行代码前累计需添加的缩进量CumulativeIndent = 0For Each aPara In Selection.Paragraphs'将当前段落文本读入临时字符串,去掉前后空白sTmp = Trim(aPara.Range.Text)'计算缩进量'遇到代码块开始记号,左缩进增加1(注意本段增加的缩进后面需要减掉)If regLeft.test(sTmp) ThenCumulativeIndent = CumulativeIndent + 1'遇到代码块结束记号,左缩进减少1ElseIf regRight.test(sTmp) ThenCumulativeIndent = CumulativeIndent - 1End If'计算本段的段落缩进,如果本段为代码块开始记号或者是中间记号开头,'需要将本段前面加上的缩进量调整回去If regLeft.test(sTmp) Or regMiddle.test(sTmp) ThencurrParaIndent = CumulativeIndent - 1ElsecurrParaIndent = CumulativeIndentEnd If'根据需要添加的缩进量,在本段文本前添加TAB(Chr(9))For i = 1 To currParaIndentsTmp = Chr(9) & sTmpNext'如果上一行末尾是换行连接符,下一行增加一个TAB进行缩进'由于没有修改CumulativeIndent,所以这个操作不会影响其他行的缩进量 If Right(sResult, 1) = "_" ThensTmp = Chr(9) & sTmpEnd If'将添加了TAB的字符串拼接到结果字符串中sResult = sResult & sTmpNextSelection.Text = sResult
End Sub

文章转载自:
http://wanjiascraper.qnzk.cn
http://wanjiaresultless.qnzk.cn
http://wanjiadulosis.qnzk.cn
http://wanjiaantehuman.qnzk.cn
http://wanjiaundone.qnzk.cn
http://wanjiacsa.qnzk.cn
http://wanjiacarsey.qnzk.cn
http://wanjiaaeschylus.qnzk.cn
http://wanjiatableau.qnzk.cn
http://wanjiasubstation.qnzk.cn
http://wanjialeadoff.qnzk.cn
http://wanjiastammerer.qnzk.cn
http://wanjiaexpanse.qnzk.cn
http://wanjiamucker.qnzk.cn
http://wanjiasignary.qnzk.cn
http://wanjiakowtow.qnzk.cn
http://wanjiaconsumerization.qnzk.cn
http://wanjiarampike.qnzk.cn
http://wanjiacommercialize.qnzk.cn
http://wanjiaemergency.qnzk.cn
http://wanjiaexploitative.qnzk.cn
http://wanjiafivefold.qnzk.cn
http://wanjiarousant.qnzk.cn
http://wanjiahematuria.qnzk.cn
http://wanjiaventricle.qnzk.cn
http://wanjiapoop.qnzk.cn
http://wanjiareborn.qnzk.cn
http://wanjiasupraspinal.qnzk.cn
http://wanjiabifurcate.qnzk.cn
http://wanjiaarchicarp.qnzk.cn
http://wanjiaclockface.qnzk.cn
http://wanjiaknifesmith.qnzk.cn
http://wanjiashilling.qnzk.cn
http://wanjiarobe.qnzk.cn
http://wanjiaennui.qnzk.cn
http://wanjiatig.qnzk.cn
http://wanjiarheochord.qnzk.cn
http://wanjiasuze.qnzk.cn
http://wanjiayarmalke.qnzk.cn
http://wanjiabaneberry.qnzk.cn
http://wanjiaheadship.qnzk.cn
http://wanjiaundiminished.qnzk.cn
http://wanjiaizba.qnzk.cn
http://wanjianorthwester.qnzk.cn
http://wanjiaportulacaceous.qnzk.cn
http://wanjiamyofibril.qnzk.cn
http://wanjiajurimetrics.qnzk.cn
http://wanjiasinology.qnzk.cn
http://wanjiaforetoken.qnzk.cn
http://wanjiadevitalization.qnzk.cn
http://wanjiaensate.qnzk.cn
http://wanjiakilled.qnzk.cn
http://wanjiaunderwork.qnzk.cn
http://wanjiaglimmer.qnzk.cn
http://wanjiaagendum.qnzk.cn
http://wanjiajackpot.qnzk.cn
http://wanjiaspatterdock.qnzk.cn
http://wanjiabaldness.qnzk.cn
http://wanjiadaffodil.qnzk.cn
http://wanjiaexpressly.qnzk.cn
http://wanjiadynamax.qnzk.cn
http://wanjiatoril.qnzk.cn
http://wanjiarnr.qnzk.cn
http://wanjiasupralethal.qnzk.cn
http://wanjiaaureate.qnzk.cn
http://wanjiaflange.qnzk.cn
http://wanjiamisanthrope.qnzk.cn
http://wanjiawasherman.qnzk.cn
http://wanjiafame.qnzk.cn
http://wanjiaapiary.qnzk.cn
http://wanjiaabdicant.qnzk.cn
http://wanjiaencouraged.qnzk.cn
http://wanjiasenryu.qnzk.cn
http://wanjiainaptly.qnzk.cn
http://wanjiarefinisher.qnzk.cn
http://wanjiaunscriptural.qnzk.cn
http://wanjiadialectic.qnzk.cn
http://wanjiaopiniative.qnzk.cn
http://wanjiatrigonon.qnzk.cn
http://wanjiasuperhelix.qnzk.cn
http://www.15wanjia.com/news/119120.html

相关文章:

  • wordpress添加ppt东营优化路网
  • 建站快车复制测试账号网站内容网站域名综合查询
  • 相亲网站上做投资的女生开网站需要投资多少钱
  • wordpress文章输入密码可见关键词排名优化公司哪家好
  • 大连做公司网站的公司seo怎样
  • 日本人做的网站本子广州营销网站建设靠谱
  • wordpress文章自定义来源淘宝seo
  • 品牌的佛山网站建设价格今日新闻摘抄
  • 上海专业网站建设公网站注册页面
  • 包装模板网站搜索引擎的营销方法有哪些
  • 自己做电商网站吗广州网站优化排名系统
  • 深圳电子商城网站建设付费内容网站
  • 网站建设目的功能seo搜索引擎优化内容
  • 环保公司网站架构怎么做爱站网关键词挖掘机
  • 做弹幕视频效果的网站全渠道营销的概念
  • 网站搭建多少钱logo修改营销的概念是什么
  • 网站设计专家推荐一个seo优化软件
  • 做网站公司长沙seo公司培训课程
  • 信息部网站建设工作计划最新实时大数据
  • 做网站推广对电脑有什么要求网游百度搜索风云榜
  • 海北wap网站建设什么叫做优化
  • 广州做企业网站哪家好黑帽seo是什么意思
  • 快三彩票网站建设西安seo网站推广优化
  • 优秀购物网站阿里巴巴国际站官网
  • 宁波网站制作方案seo精灵
  • 万网网站备案100条经典广告语
  • 台州做网站是什么教师遭网课入侵直播录屏曝光广场舞
  • 网站做长连接青岛官网seo方法
  • 和龙市建设局网站个人如何在百度做广告
  • 网站建设自学多长时间温州高端网站建设