Показать полную графическую версию : Отладка программ
1.Определить количество абзацев в документе. Абзац, который содержит наибольшее число предложений, выделить красным курсивом. Вывести в конце документа сообщение:
а) о количестве абзацев;
б) номера абзацев с наибольшим числом предложений.
2. Подсчитать в 4 абзаце (если такого нет, то выдать соответствующее сообщение) количество слов, начинающихся и заканчивающихся на одну и ту же букву. В конце документа вывести соответствующее сообщение.
3. Найти в документе самое длинное слово. Предложение с самым длинным словом скопировать в начало документа.
zena, вы хотите чтобы за Вас была решена задача или ждёте намека на решение, если первое то Вы ошиблись форумом (тут не фриланс), если второе то:
1. ThisDocument.Paragraphs.Count
насчет наибольшее число предложений
ThisDocument.Paragraphs(x).Range.Select
ThisDocument.Selection.Sentences.Count
выделить красным курсивом
ThisDocument.Selection.Font.Italic = True
ThisDocument.Selection.Font.Color = vbRed
а) количество абзацев ThisDocument.Paragraphs.Count
б) номера абзацев с наибольшим числом предложений - запоминать в массив при обходе во время поиска самого большого по предложениям абзаца
2. ThisDocument.Paragraphs(4).Range.Select
ThisDocument.Selection.Sentences(x).Select
ThisDocument.Selection.Words.Count
и соответственно использовать mid(Selection.Words(y).Text,1,1) = mid(Selection.Words(y).Text,len(Selection.Words(y).Text)-1,1)
3. ThisDocument.Words.Count - обходим по нему и находим
KnRSU, «ThisDocument» работает именно с тем документом, в котором находится макрос, так что всё ж — «ActiveDocument».
Спасибо, я уже давно ничего не жду. Сама давно всё сделала:
Sub P1()
'Первый вопрос.
Dim MaxКоличество As Long
Dim MaxНомер As Long
Dim i As Long
With ActiveDocument
MaxКоличество = .Paragraphs(1).Range.Sentences.Count
MaxНомер = 1
For i = 1 To .Paragraphs.Count
If .Paragraphs(i).Range.Sentences.Count > MaxКоличество Then
MaxКоличество = .Paragraphs(i).Range.Sentences.Count
MaxНомер = i
End If
Next i
With .Paragraphs(MaxНомер).Range.Font
.Italic = True
.Color = wdColorRed
End With
.Content.InsertParagraphAfter
.Range(Start:=.Range.End - 1, End:=.Range.End - 1).Text = _
.ComputeStatistics(wdStatisticParagraphs)
.Content.InsertParagraphAfter
.Range(Start:=.Range.End - 1, End:=.Range.End - 1).Text = MaxНомер
End With
End Sub
Sub P2()
'Второй вопрос
Dim КолСлов As Long
Dim Слово As Word.Range
With ActiveDocument
If .ComputeStatistics(wdStatisticParagraphs) < 4 Then
MsgBox "В предложении меньше 4 абазацев; программа будет завершена", vbCritical
Exit Sub
End If
For Each Слово In .Paragraphs(4).Range.Words
If Left((Trim(Слово)), 1) = Right((Trim(Слово)), 1) Then
КолСлов = КолСлов + 1
End If
Next Слово
End With
MsgBox "В 4 абазаце количество слов, начинающихся и заканчивающихся на одну букву, равно: " & КолСлов
End Sub
Sub P3()
'Третий вопрос
Dim i As Long
Dim MaxКол As Long
Dim MaxНомер As Long
With ActiveDocument
MaxКол = .Words(1).Characters.Count
MaxНомер = 1
For i = 2 To .Words.Count
If .Words(i).Characters.Count > MaxКол Then
MaxКол = .Words(i).Characters.Count
MaxНомер = i
End If
Next i
.Range(Start:=.Words(MaxНомер).Sentences(1).Start, End:=.Words(MaxНомер).Sentences(1).End).Copy
.Content.InsertParagraphBefore
.Range(Start:=0, End:=0).Paste
End With
End Sub
© OSzone.net 2001-2012
vBulletin v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.