Comment / Uncomment macros

CodeGuru content and product recommendations are editorially independent. We may make money when you click on links to our partners. Learn More.

These macros were contributed by Guy Gascoigne – Piggford


Here are a couple of macros that I find very useful, they allow you to
comment or uncomment out the current line or selection. CommentOut is
based upon a similar macro that was shipped with Visual Studio but trimmed
to suit my needs better, the UnCommentOut function will reverse it’s effects.


To use: take these two definitions and paste them into your current macro
file, and save. For ease of use I bind these to a pair of keys, in my case
I bind Ctrl+/ to CommentOut and Ctrl+. to UnCommentOut.


Sub CommentOut ()
‘DESCRIPTION: Comments out a selected block of text.
Dim win
set win = ActiveWindow
if win.type <> “Text” Then
MsgBox “This macro can only be run when a text editor window is active.”
else
CommentType = “//”

StartLine = ActiveDocument.Selection.TopLine
EndLine = ActiveDocument.Selection.BottomLine
If EndLine < StartLine Then Temp = StartLine StartLine = EndLine EndLine = Temp End If If EndLine = StartLine Then ActiveDocument.Selection = CommentType + ActiveDocument.Selection Else For i = StartLine To EndLine ActiveDocument.Selection.GoToLine i ActiveDocument.Selection.SelectLine ActiveDocument.Selection = CommentType + _ ActiveDocument.Selection Next End If End If End Sub Sub UnCommentOut () 'DESCRIPTION: Uncomments a selected block of text. Dim win set win = ActiveWindow if win.type <> “Text” Then
MsgBox “This macro can only be run when a text editor window is active.”
else
StartLine = ActiveDocument.Selection.TopLine
EndLine = ActiveDocument.Selection.BottomLine
If EndLine < StartLine Then Temp = StartLine StartLine = EndLine EndLine = Temp End If For i = StartLine To EndLine TmpBlock = "" ActiveDocument.Selection.GoToLine i ActiveDocument.Selection.SelectLine CmtBlock = ActiveDocument.Selection Trim(CmtBlock) If Instr(CmtBlock,"//”) <> 0 Then
TmpBlock = TmpBlock + Left (CmtBlock, Instr (CmtBlock,”//”) – 1)
CmtBlock = Right(CmtBlock, (Len(CmtBlock) – (Instr(CmtBlock, “//”) + 1)))
CmtBlock = TmpBlock + CmtBlock
End If

ActiveDocument.Selection = CmtBlock
Next

End If
End Sub


Here’s an update by Todd Crooks.


It uses regular expressions to add or remove comments.


Sub BlockComment()
ActiveDocument.Selection.ReplaceText “^”, “//”, dsMatchRegExp
End Sub

Sub BlockUncomment()
ActiveDocument.Selection.ReplaceText “^//”, “”, dsMatchRegExp
End Sub

Updated on: October 30, 1998

More by Author

Previous article
Next article

Get the Free Newsletter!

Subscribe to Developer Insider for top news, trends & analysis

Must Read