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

原创 2003年04月04日 09:16:00

联系方式:cadinfo@263.net

==========================================================================
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,

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

用宏定义实现注释符号

实现方法: #define DEBUG #ifdef DEBUG #define DebugOut UartOut #else #define DebugOut /\ /UartOut...
  • lovenessless
  • lovenessless
  • 2013年11月13日 17:16
  • 2502

c语言多行宏定义及其注释

多行宏定义中的注释问题  早上在写代码时遇到这样一个问题:即如何在一个拥有多行的宏定义中做注释?,这里把方法演化的过程贴出来,可能对某些朋友有些借鉴意义。 宏定义高深莫...
  • Bill_Xiang
  • Bill_Xiang
  • 2014年03月18日 20:40
  • 2015

vb 去掉以“//”为注释行的内容

'//去掉源代码中的“//”注释语句 Public Function cliearAnnotation(strCode As String) As String Dim arr, a As ...
  • boys1999
  • boys1999
  • 2014年04月08日 14:49
  • 515

自动添加注释—VS2010宏的使用

在敲代码的过程中类和函数都需要进行注释,但总是一遍一遍的复制粘贴觉得很是麻烦,终于找到了一个不错的解决方法:使用宏。     所谓宏,就是一些命令组织在一起,作为一个单独命令完成一个特定任务。在日常...
  • wlccomeon
  • wlccomeon
  • 2013年06月29日 10:58
  • 11033

VS2010宏注释运行后没有效果

VS2010宏注释运行后没有效果是因为微软发布更新阻止了宏的运行: 二月二十五号, 微软发布 KB2934830"反射类型可能不工作通过 DCOM 安全公告 MS14 009″ 从安装安全更新后进...
  • rankun1
  • rankun1
  • 2016年01月05日 10:57
  • 998

VC注释宏

VC注释宏是类似这样的宏:{{AFX_MSG_MAP(CDrawView) ON_WM_LBUTTONDOWN() }}AFX_MSG_MAP是由MFC自动生成的一些被注释的代码,MFC的代码添加工具...
  • hnlwt
  • hnlwt
  • 2017年04月01日 16:59
  • 3502149

Doxygen注释的风格

1      JavaDoc风格的注释 1.1    概述 JavaDoc 风格的注释风格主要使用下面这种样式: 即在注释块开始使用两个星号 ‘ * ‘  /**   description  ...
  • netlinux
  • netlinux
  • 2012年06月20日 23:56
  • 3828

VI中注释多行的一种方法

本文向大家描述VI中怎么注释多行:      VI是个强大的编译器,注释多行的功能肯定也必不可少。VI注释多行的一种方法:      1、esc进入命令行模式;      2、Ctrl+v切换到块选择...
  • yxtouch
  • yxtouch
  • 2014年02月08日 15:36
  • 4216

Linux----快速注释包含特定字符串的行

常常会需要将程序中的输出语句注释,往往手工非常慢,而且容易漏。 今天研究了 linux  的 sed, 真心好用。。 例子: 将 包含 cout 的语句注释,也就是说包含cout 语句前加...
  • u012653791
  • u012653791
  • 2014年03月30日 21:28
  • 2920

VS2010编写自定义宏注释

原文:http://blog.csdn.net/ajioy/article/details/8483011 这里所说的宏可不是指#define PI 3.14159之类的,而是按下Alt + 1,...
  • Micro_Ryan
  • Micro_Ryan
  • 2015年04月22日 09:41
  • 1205
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:仿照VC.NET的选择行注释宏
举报原因:
原因补充:

(最多只允许输入30个字)