Статьи из блога
Операции округления для выделенного числа
Павел задал вопрос:
Как выделенное число в ворде можно умножить на 1,5 и округлить до ближайшего кратного 50-ти? Например: имеем число 44560, после умножения на 1,5 получаем 66840, а нам его надо округлить до 66850 и записать вместо изначального числа.
Этот вопрос был опубликован в рассылке и два специалиста ответили Павлу.
Александр предложил такой макрос:
Sub FiftyRounding() ' Работает как для положительных, так и для отрицательных чисел ' в пределах типа Double Dim TwoLast As Integer Dim Num As Double On Error GoTo WrongNumber ' На случай, если выделено не число. ' Умножаем выделенное число, выбрасываем дробную часть: Num = Int(CDbl(Selection.Text) * 1.5) ' Извлекаем число, состоящее из двух последних цифр: TwoLast = Abs(Num - Sgn(Num) * Int(Abs(Num) / 100) * 100) ' Округляем в зависимости от значения двузначного числа: Select Case TwoLast Case 0 To 24: Num = Num - Sgn(Num) * TwoLast Case 25: Num = Num - TwoLast + 50 Case 26 To 74: Num = Num - Sgn(Num) * (TwoLast - 50) Case 75: Num = Num - TwoLast + 100 Case 76 To 99: Num = Num - Sgn(Num) * (TwoLast - 100) End Select Selection.Text = CStr(Num) ' Возвращаем результат в Word. WrongNumber: If Err.Number = 13 Then MsgBox "Выделенный фрагмент не является числом" End If End Sub
Леонид Бродский предложил другой вариант макроса с функцией:
Sub Round50() Selection.Range.Text = RoundX(Selection.Range.Text, 50) End Sub Public Function RoundX(numberToRound As Double, roundBase As Integer) RoundX = Round(numberToRound / roundBase, 0) * roundBase End Function
Рубрика: Вопрос-Ответ, Макросы
Метки: макросы | округление
Просмотров: 19006
Подписаться на комментарии по RSS
Версия для печати
Метки: макросы | округление
Просмотров: 19006
Подписаться на комментарии по RSS
Версия для печати
Еще записи по вопросам использования Microsoft Word:
- 10 вопросов и ответов по редактору Word (1 часть)
- 3 способа очистки списка недавно открытых документов
- Word 2007: добавляем свою вкладку и свои команды
- Word 2007: полотно, рисунки, линии
- Word 2007: смена формата сохранения файла
- Word 97 - решение проблемы с отображением символов на линейке
- Абзац с цветным фоном
- Автоматизация текстового набора в Word
- Автоматическая запись макроса
- Автоматическая нумерация билетов
- Автоматическая расстановка переносов
- Автоматическое обновление полей при открытии документа
- Автоматическое сохранение документа при его закрытии
- Автотекст с последовательной нумерацией
- Белый текст на синем фоне в Word 2007
- Быстрая смена ориентации страниц документа
- Быстрое перемещение между открытыми документами Word
- Быстрое создание нового документа на основе шаблона
- Быстрый ввод текста с помощью команды =rand()
- Ввод повторяющихся фрагментов текста в Word 2007
- Ввод часто повторяющихся фрагментов текста
- Вертикальное выравнивание текста
- Возможно ли запретить копирование текста из документа Word?
- Вопрос о работе с графиками (диаграммами) в Word
- Вопросы и ответы о гиперссылках в редакторе Word
Комментариев: 2
Функция RoundX годится для округления по любому основанию, например 0.05, 5, 10. Обработка ошибок из предыдущего варианта здесь тоже не помешает.
День добрый. Совпадение я тоже Павел и похожая задача стояла передо мной, тока я ее сначала решил а потом наткнулся на ваш сайт.
Для своих нужд я состряпал вот такой скриптик.
У меня в ворде регулярно бывает до десятка прайс-листов. Цены записаны в таком вот виде: 34,320.00
Надо тоже умножать на 15% и округлять в большую сторону до кратного 50-ти.
Вот скрипт: