• 软件测试技术
  • 软件测试博客
  • 软件测试视频
  • 开源软件测试技术
  • 软件测试论坛
  • 软件测试沙龙
  • 软件测试资料下载
  • 软件测试杂志
  • 软件测试人才招聘
    暂时没有公告

字号: | 推荐给好友 上一篇 | 下一篇

仿照VC.NET的选择行注释宏

发布: 2007-7-01 20:40 | 作者: admin | 来源: | 查看: 14次 | 进入软件测试论坛讨论

领测软件测试网

联系方式:

==========================================================================
Sub BackSlashCommentOut()
´DESCRIPTION: Comment several selected rows of codes using double-backslash

´开始定制注释宏
  Dim win
  set win = ActiveWindow
  ´Added by cadinfo, 2002,6,1 窗口关闭时无法使用宏,微软有几个自带的宏存在BUG
  if VarType(win)=vbObject Then Exit Sub
  if win.type <> "Text" Then
    MsgBox "This macro can only be run when a text editor window is active."
  else
    ´Define three string variable
    TmpBlock = ""
    TmpRow = ""
    CmtBlock = Trim(ActiveDocument.Selection)
    LineNum = ActiveDocument.Selection.CurrentLine
   
    ´判断是否为空,空退出宏
   
    if( Len(CmtBlock)=0) Then Exit Sub

    TypeOfFile = FileType(ActiveDocument)
    If TypeOfFile > 0 And TypeOfFile < 5 Then
      If TypeOfFile > 3 Then
        CommentType = "´CMT " ´ VBShit
      Else
        CommentType = "//CMT "  ´C & C++ & C# &Java use the same
      End If

      ´注释方式1 反斜杠backslash "//CMT"

      ´---------处理开始----------------
      ´直到回车符=0
      Do While Instr (CmtBlock, vbLf) <> 0
        TmpRow = Left(CmtBlock, Instr(CmtBlock, vbLf))
        If Instr(TmpRow, CommentType) = 0 Then  ´ 如果没有注释标志,则添加注释
        ´添加注释标志"//CMT "
          TmpBlock = TmpBlock + CommentType + TmpRow
        Else             ´ 如果有注释标志,则删除注释
          TmpBlock = TmpBlock + Mid (TmpRow, Instr(TmpRow, CommentType)+Len(CommentType), Instr(TmpRow, vbLf))
        End If
        ´返回右边的字符串,长度=Len(CmtBlock)-Instr(CmtBlock, vbLf)
        CmtBlock = Right(CmtBlock, (Len(CmtBlock)-Instr(CmtBlock, vbLf)))
      Loop

      ´最后一行如果没有选中回车,则在行首添加注释标志"//CMT "
      if(Len(Trim(CmtBlock))<>0) Then
        If Instr(CmtBlock, CommentType) = 0 Then
          CmtBlock=CommentType+CmtBlock
        Else
          CmtBlock = Right (CmtBlock, Len(CmtBlock) - (Instr(CmtBlock, CommentType)+Len(CommentType))+1)
        End If
      End If
     
      CmtBlock = TmpBlock + Trim(CmtBlock)  ´拼接字符串
      ´---------到此处理完毕----------------

      ´ActiveDocument.Selection.Delete
      ActiveDocument.Selection = CmtBlock
      ActiveDocument.Selection.GotoLine LineNum
   
      ´添加语句选择处理行   (ActiveDocument.Selection.SelectLine)
´     StartLine = ActiveDocument.Selection.TopLine
´     EndLine = ActiveDocument.Selection.BottomLine
´     For i = StartLine To EndLine
´       ActiveDocument.Selection.GoToLine i, dsSelect
´     Next

      ´另外一种注释方式
      ´ActiveDocument.Selection = "/*" + ActiveDocument.Selection + "*/"
    Else
      MsgBox("File not supported or unknow error!")
    End If
  End If
´结束定制注释宏
End Sub
========================================================

这次修改,完成了Toogle的功能,并且指出VS自带的一些宏中存在BUG,

在无文档打开时调用宏会报错,作者添加了判断语句,屏蔽了这个问题。


延伸阅读

文章来源于领测软件测试网 https://www.ltesting.net/


关于领测软件测试网 | 领测软件测试网合作伙伴 | 广告服务 | 投稿指南 | 联系我们 | 网站地图 | 友情链接
版权所有(C) 2003-2010 TestAge(领测软件测试网)|领测国际科技(北京)有限公司|软件测试工程师培训网 All Rights Reserved
北京市海淀区中关村南大街9号北京理工科技大厦1402室 京ICP备2023014753号-2
技术支持和业务联系:info@testage.com.cn 电话:010-51297073

软件测试 | 领测国际ISTQBISTQB官网TMMiTMMi认证国际软件测试工程师认证领测软件测试网