Помощь - Поиск - Пользователи - Календарь
Полная версия: VBasic в ворде
Форум «Всё о Паскале» > Современный Паскаль и другие языки > Ада и другие языки
TOPEHTO
Ситуация такая, надо написать макрос который все зарезервированные слова в паскале будет делать жирным(Begin end if и т.д.) а комментарии, то что заключено между {} выделять красным цветом, с первым заданием справился со вторым ума не приложу, помогите плиз кто чем может

Текст макроса прилагается
Цитата
Sub Hilight()
'
' Holight Ìàêðîñ
'

'
With Selection.Find
.ClearFormatting
.Replacement.ClearFormatting
.Replacement.Font.Bold = True
.Forward = True
.Wrap = wdFindContinue
.Format = True
.MatchCase = False
.MatchWholeWord = True
.MatchWildcards = False
.MatchSoundsLike = False
.MatchAllWordForms = False
.Text = "begin"
.Replacement.Text = "begin"
.Execute Replace:=wdReplaceAll
.Text = "end"
.Replacement.Text = "end"
.Execute Replace:=wdReplaceAll
.Text = "if"
.Replacement.Text = "if"
.Execute Replace:=wdReplaceAll
.Text = "then"
.Replacement.Text = "then"
.Execute Replace:=wdReplaceAll
.Text = "program"
.Replacement.Text = "program"
.Execute Replace:=wdReplaceAll
.Text = "var"
.Replacement.Text = "var"
.Execute Replace:=wdReplaceAll
.Text = "repeat"
.Replacement.Text = "repeat"
.Execute Replace:=wdReplaceAll
.Text = "until"
.Replacement.Text = "until"
.Execute Replace:=wdReplaceAll
.Text = "for"
.Replacement.Text = "for"
.Execute Replace:=wdReplaceAll
.Text = "to"
.Replacement.Text = "to"
.Execute Replace:=wdReplaceAll
.Text = "do"
.Replacement.Text = "do"
.Execute Replace:=wdReplaceAll
.Text = "while"
.Replacement.Text = "while"
.Execute Replace:=wdReplaceAll
.Text = "downto"
.Replacement.Text = "downto"
.Execute Replace:=wdReplaceAll
End With
End Sub
volvo
Цитата
Текст макроса прилагается
blink.gif Издеваешься? Это в 10 строк делается, включая и выделение красным цветом комментариев:

Код
Sub Hilight()

Const Sep As String = ";"
Dim strSearch As String
Dim Comment As Boolean

strSearch = "begin;end;if;then;program;var;repeat;until"
Set myRange = ActiveDocument.Range(ActiveDocument.Paragraphs(1).Range.Start, ActiveDocument.Paragraphs(ActiveDocument.Paragraphs.Count).Range.End)
For Each myWord In myRange.Words
    If InStr(1, Sep & strSearch & Sep, Sep & Trim$(myWord.Text) & Sep, vbTextCompare) > 0 Then myWord.Font.Bold = True
    
    If Trim$(myWord.Text) = "{" Then Comment = True
    
    If Comment = True Then myWord.Font.ColorIndex = wdRed
        
    If Trim$(myWord.Text) = "}" Then Comment = False
Next myWord
End Sub
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.