参考《word排版艺术》,写了几个简单的宏
1. 代码加行号
2. 代码删行号
3. 注释蓝色
4. 取消注释蓝色
5. 加粗关键字(matlab)
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
Sub 代码加行号()
Dim nLineNum '行号(数值)
Dim sLineNum As String '行号(文字)
Dim selRge As Range '用以记录整块程序代码(多行)
Dim I '计数器
Set selRge = Selection.Range '首先记录Selection(选中区域)
For nLineNum = 1 To selRge.Paragraphs.Count '每段操作
sLineNum = Str(nLineNum) '行号转为文字
sLineNum = LTrim(sLineNum) '去除左边空格
For I = 1 To (3 - Len(sLineNum)) '补足三位数(加“0”)
sLineNum = "0" + sLineNum
Next I
sLineNum = "#" & sLineNum '前加符号“#”
sLineNum = sLineNum + " " '后加3空格
selRge.Paragraphs(nLineNum).Range.InsertBefore (sLineNum) '将行号在前面插入
Next nLineNum
End Sub
Sub 代码删行号()
Dim selRge As Range '用以记录整块程序代码(多行)
Dim nLineNum As Integer '行号(数值)
Set selRge = Selection.Range '首先记录Selection(选中区域)
For nLineNum = 1 To selRge.Paragraphs.Count '每段操作
' 行号占7位
selRge.Paragraphs(nLineNum).Range.Words(1).Delete ' delete #
selRge.Paragraphs(nLineNum).Range.Words(1).Text = Mid(selRge.Paragraphs(nLineNum).Range.Words(1).Text, 7)
Next nLineNum
End Sub
Sub 蓝色注释()
Dim nLineNum '行号(数值)
Dim selRge As Range '用以记录整块程序代码(多行)
'注释为蓝色
Dim lineProgramRange As Range
Dim commentRage As Range
Dim TextLine As String
Dim progComment As String
Dim RgnStart As Long
Dim RgnEnd As Long
Set selRge = Selection.Range '首先记录Selection(选中区域)
For nLineNum = 1 To selRge.Paragraphs.Count '每段操作
Set lineProgramRange = selRge.Paragraphs(nLineNum).Range
TextLine = lineProgramRange.Text
CharPos = InStr(1, TextLine, "%")
If CharPos <> 0 Then
'progComment = Mid(TextLine, CharPos)
RgnStart = lineProgramRange.Start
RgnEnd = lineProgramRange.End
lineProgramRange.SetRange Start:=RgnStart + (CharPos - 1), End:=RgnEnd
lineProgramRange.Select
Selection.Font.ColorIndex = wdBlue
End If
Next nLineNum
End Sub
Sub 取消蓝色注释()
Dim nLineNum '行号(数值)
Dim selRge As Range '用以记录整块程序代码(多行)
'注释为蓝色
Dim lineProgramRange As Range
Dim commentRage As Range
Dim TextLine As String
Dim progComment As String
Dim RgnStart As Long
Dim RgnEnd As Long
Set selRge = Selection.Range '首先记录Selection(选中区域)
For nLineNum = 1 To selRge.Paragraphs.Count '每段操作
Set lineProgramRange = selRge.Paragraphs(nLineNum).Range
TextLine = lineProgramRange.Text
CharPos = InStr(1, TextLine, "%")
If CharPos <> 0 Then
'progComment = Mid(TextLine, CharPos)
RgnStart = lineProgramRange.Start
RgnEnd = lineProgramRange.End
lineProgramRange.SetRange Start:=RgnStart + (CharPos - 1), End:=RgnEnd
lineProgramRange.Select
Selection.Font.ColorIndex = wdAuto
End If
Next nLineNum
End Sub
Sub 加粗关键字()
Dim selRge As Range
Dim myParagraph As Paragraph
Dim I, J As Integer '计数器
Dim mystr As String
Set selRge = Selection.Range '首先记录Selection(选中区域)
For Each myParagraph In selRge.Paragraphs '每段操作
J = myParagraph.Range.Words.Count '统计该段的单词数
For I = 1 To J
'比较字符串,查找所有替换的单词
mystr = Trim(myParagraph.Range.Words(I).Text)
If (isKeyWords(mystr)) Then
myParagraph.Range.Words(I).Select '选择所替换的单词
Selection.Font.Bold = True '将其格式变为bold
End If
Next I
Next myParagraph
End Sub
Private Function isKeyWords(testWord) As Boolean
Dim I As Integer
Dim keyWords(16) As String
keyWords(1) = "warning"
keyWords(2) = "return"
keyWords(3) = "if"
keyWords(4) = "else"
keyWords(5) = "end"
keyWords(6) = "break"
keyWords(7) = "case"
keyWords(8) = "catch"
keyWords(9) = "elseif"
keyWords(10) = "for"
keyWords(11) = "global"
keyWords(12) = "otherwise"
keyWords(13) = "switch"
keyWords(14) = "try"
keyWords(15) = "while"
keyWords(16) = "function"
ltestWord = LCase(testWord)
For Each myWord In keyWords
If (ltestWord = myWord) Then
isKeyWords = True
Exit Function
End If
Next
isKeyWords = False
End Function
没有评论:
发表评论