![]() |
|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
Опции темы | Поиск в этой теме |
![]() |
#1 |
Регистрация: 11.07.2010
Сообщений: 5
|
![]()
Всем Привет!
Возникла необходимость написать простенький макрос, может кто подскажет. Существует текст, состоящий из нескольких абзацев. Нужно расставить случайные числа (целые в заданном диапазоне) в начале каждого абзаца, за исключением абзацев, начинающихся с символов "#$%". Расстановка по сочетанию клавиш, то есть каждый абзац обрабатывается нажатием клавиш. Единственная тонкость - случайные числа соседних абзацев должны быть разные (абзац "#$%" выступает как любая другая цифра). Диапазон случайных чисел можно задать в любом формате в начале документа. Пример. Существующий файл: Абзац1 Абзац2 Абзац3 #$%Абзац4 Абзац5 Абзац6 #$%Абзац7 Абзац8 Файл после обработки: 1Абзац1 4Абзац2 3Абзац3 #$%Абзац4 5Абзац5 8Абзац6 #$%Абзац7 4Абзац8 На данном этапе сейчас дошел только до того, что генерирует случайные числа в заданном диапазоне и ставит в начало абзаца. А переходы с сравнением предыдущей цифры пока не получаются. Заранее спасибо. |
![]() |
![]() |
![]() |
#2 |
Старожил
Регистрация: 09.01.2008
Сообщений: 26,229
|
![]()
просто совет (как вариант) сразу нагенерите чисел с запасом так, чтобы соседние отличались. Сохраните их в массив (или в коллекцию). А потом доставайте по очереди по мере необходимости..
p.s. в программирования на VBA под Word не силён, поэтому конкретным кодом не могу помочь... |
![]() |
![]() |
![]() |
#3 |
Регистрация: 11.07.2010
Сообщений: 5
|
![]()
ИМХО, таким образом не совсем оптимально будет - дольше и памяти больше нужно. Тут алгоритм прозрачен, но возникают сложности с синтаксисом, так как напрямую с VBA очень мало имел дело.
|
![]() |
![]() |
![]() |
#4 | |||
Старожил
Регистрация: 09.01.2008
Сообщений: 26,229
|
![]() Цитата:
![]() Погодите, Вам же нужно, чтобы не совпадали цифры в текущем и предыдущем абзацах?! Так допустимо? : Цитата:
Цитата:
|
|||
![]() |
![]() |
![]() |
#5 |
Балуюсь кодами
Участник клуба
Регистрация: 09.01.2009
Сообщений: 1,837
|
![]()
Так подойдёт?
Код:
Лучше день потерять — потом за пять минут долететь!©
|
![]() |
![]() |
![]() |
#6 |
Регистрация: 11.07.2010
Сообщений: 5
|
![]()
Спасибо за код, работает моментально, единственный момент, там по комбинации клавиш нужна одна цифра в начале абзаца, затем курсор ставится на начало следующего. Цикл убрал, курсор перевел, но по нажатию клавиш цифра ставится каждый раз в начало первого абзаца. Не подскажите синтаксис как переменной "opar" присваивать текущий параграф?
|
![]() |
![]() |
![]() |
#7 |
Балуюсь кодами
Участник клуба
Регистрация: 09.01.2009
Сообщений: 1,837
|
![]() Код:
Лучше день потерять — потом за пять минут долететь!©
|
![]() |
![]() |
![]() |
#8 |
Регистрация: 11.07.2010
Сообщений: 5
|
![]()
Супер, спасибо. Попробую. Надеюсь доделать дальше сам.
|
![]() |
![]() |
![]() |
#9 |
Регистрация: 11.07.2010
Сообщений: 5
|
![]()
Попробовал. Не получилось сделать, не хочет работать так, как нужно
![]() Курсор находится в начале любого абзаца Нажимается сочетание клавиш, вызывающих данную подпрограмму. Если: начало текущего абзаца "#$%", переход к началу следующего абзаца, генерация числа, переход к началу следующего абзаца -> конец подпрограммы Иначе: смотрим предыдущий абзац Если: в начале "#$%", то генерация числа в текущем абзаце, переход к следующему абзацу -> конец подпрограммы Иначе: запоминаем номер в начале предыдущего абзаца, в текущем генерируем число, отличное от него, переход к следующему абзацу -> конец подпрограммы Конец если Конец если Заранее спасибо Последний раз редактировалось Maxxusha; 15.07.2010 в 00:04. |
![]() |
![]() |
![]() |
#10 | |
Балуюсь кодами
Участник клуба
Регистрация: 09.01.2009
Сообщений: 1,837
|
![]()
Алгоритм неверный.
Цитата:
Думай дальше. Или опиши подробнее, что ты хочешь. Ставить случайное число в начале текущего абзаца, а если в начале текущего абзаца стоят символы "#$%", то число вставлять в следующий?
Лучше день потерять — потом за пять минут долететь!©
|
|
![]() |
![]() |
![]() |
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Расставить пробелы | dukesoteg | Помощь студентам | 0 | 10.06.2010 18:30 |
Символ абзаца | Dmittrii | Microsoft Office Word | 3 | 17.03.2009 12:13 |
Символ абзаца Word 2003 | dreack | Microsoft Office Word | 5 | 01.03.2009 14:17 |
взаимно простое числы | Cantana | Помощь студентам | 4 | 07.03.2008 08:46 |
Задача на длинные числы | molodzo | Помощь студентам | 1 | 21.11.2007 11:23 |