zolivan
Junior Member | Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору Подскажите пожалуйста. Создал такой код, смысл его - переводит буквы из ВЕРХНЕГО РЕГИСТРА в нижний, за исключением первого слова и слов после точек, где в нижний регистр не должны переводиться первые символы: Sub Shift() Dim sText As String, sLText As String, sPrText As String, sNewText As String Dim contSent As Integer, i As Integer, countWords As Integer ' Форматирование первого слова i = 1 countWords = ActiveDocument.Words.Count 'количество слов sText = ActiveDocument.Words(i) ' возвращаем первое слово ' Если первое слово, то заглавная буква sLText = Left(sText, 1) & LCase(Right(sText, (Len(sText) - 1))) sPrText = sText 'принимаем значение предыдущего слова, для следующего прогона sNewText = sLText 'Накапливаем форматированный текст ' Форматирование первого слова ' Цилк, который переводит слова в нижний регистр, кроме тех, что после точки For i = 2 To countWords sText = ActiveDocument.Words(i) ' возвращаем очередное слово ' Если предыдущая точка, то заглавная буква If sPrText = (Chr(46) & Chr(32)) Or sPrText = (Chr(46) & Chr(13) & Chr(10)) Then sLText = Left(sText, 1) & LCase(Right(sText, (Len(sText) - 1))) Else sLText = LCase(sText) End If sPrText = sText 'принимаем значение предыдущего слова, для следующего прогона sNewText = sNewText & sLText 'Накапливаем форматированный текст Next ' Выделение и замена текста на отформатированный ActiveDocument.Range.Select Selection.text = sNewText End Sub Проблема в том, что условие: ' Если предыдущая точка, то заглавная буква If sPrText = (Chr(46) & Chr(32)) Or sPrText = (Chr(46) & Chr(13) & Chr(10)) Then sLText = Left(sText, 1) & LCase(Right(sText, (Len(sText) - 1))) Else не отрабатываеться на новом абзаце, т.е. там где новый абзац тоже слово с маленькой буквы, а должно предложение начинаться с большой. Вот так. Может sPrText = (Chr(46) & Chr(13) & Chr(10)) - это запись не верна, как правильно? Заранее спасибо! | Всего записей: 46 | Зарегистр. 24-10-2006 | Отправлено: 13:23 02-12-2008 | Исправлено: zolivan, 13:26 02-12-2008 |
|