Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Microsoft Office и VBA программирование > Microsoft Office Word
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 14.02.2012, 11:55   #1
Тандер
Пользователь
 
Регистрация: 03.01.2012
Сообщений: 58
По умолчанию Неправильный рандом

Добрый день. Есть набор макровсов, генерующих случайные числа и вставляющие их в таблицы. Цифры генерируются случайные, но как оказалось, если закрыть документ, и запустить макрос заново - цифры будут генерироваться точно такие же! Случайный, но точно такие же, как в предыдущий раз!
Что можно сделать?

Код:
Function RandInt(min, max) As Integer
RandInt = (max - min) * Rnd + min
End Function

Sub MK()

Selection.Find.ClearFormatting
    With Selection.Find
        .Text = "Таблица 1"
        .Replacement.Text = ""
        .Forward = True
        .Wrap = wdFindContinue
        .Format = False
        .MatchCase = False
        .MatchWholeWord = False
        .MatchWildcards = False
        .MatchSoundsLike = False
        .MatchAllWordForms = False
    End With
    Selection.Find.Execute
    i = 2
    j = 2
    MyValue = RandInt(50, 200)
    Selection.Tables.Item(1).Cell(i, j).Range.Text = MyValue

End Sub
Спасибо!
Тандер вне форума Ответить с цитированием
Старый 14.02.2012, 13:22   #2
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

хелп не пробовали посмотреть?

цитирую
Цитата:
To repeat sequences of random numbers, call Rnd with a negative argument immediately before using Randomize with a numeric argument. Using Randomize with the same value for number does not repeat the previous sequence.
т.е. попробуйте вначале (например, на загрузке документа) вызывать один раз функцию Randomize;
Serge_Bliznykov вне форума Ответить с цитированием
Старый 14.02.2012, 13:41   #3
Тандер
Пользователь
 
Регистрация: 03.01.2012
Сообщений: 58
По умолчанию

Спасибо! То есть сделать так:
Код:
Function RandInt(min, max) As Integer
Randomize
RandInt = (max - min) * Rnd + min
End Function
Правильно?
Тандер вне форума Ответить с цитированием
Старый 14.02.2012, 13:57   #4
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

ну, имхо, можно и так.

но я бы (если есть возможность, конечно!) вынес вызов Randomize.
в любую процедуру, которая вызывается один раз при загрузке MS Word'а или при загрузке документа (на создание нового документа или на открытие документа Document_New или Document_Open ).
Чтобы процедура Randomize отработала один раз.
Serge_Bliznykov вне форума Ответить с цитированием
Старый 14.02.2012, 14:17   #5
Тандер
Пользователь
 
Регистрация: 03.01.2012
Сообщений: 58
По умолчанию

Спасибо за совет. Можно показать как это корректно сделать?
Тандер вне форума Ответить с цитированием
Старый 14.02.2012, 15:17   #6
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

ну, я же сказал:
"если есть возможность, конечно"!


тут всё зависит от того, как и где Вы храните Ваши макросы, как их запускаете на выполнение и прочие КОНКРЕТНЫЕ детали.

а проиллюстрировать свои слова я хочу примером файлика, где макрос назначен на открытие документа.
ВНимание! Макросы должны быть включены!
Вложения
Тип файла: doc JustExample.doc (27.5 Кб, 7 просмотров)
Serge_Bliznykov вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
проверка на неправильный ввод a.n.o.n.i.m Общие вопросы C/C++ 5 23.10.2011 09:57
неправильный user32.lib 547538594554849886 Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 5 22.12.2009 21:27
неправильный запрос? dedyshka PHP 8 17.11.2009 20:27
Программа строит неправильный график xMass Помощь студентам 7 06.06.2008 19:04
Неправильный вывод данных из стека С++ Cyberex Общие вопросы C/C++ 3 07.05.2008 16:53