Консультация № 172312
18.09.2009, 22:46
0.00 руб.
0 1 1
Здраствуйте Уважаемые эксперты. У меня снова проблема с VBА. А именно не могу понять как организовать следуюзие действия более оптимально.(см. Приложение)
Задача вот в чем. С С2 по Е12 нужно ячейки заполнить случайными числами. Это в екселе.
Пробовал так :
ActiveSheet.Range("C2:E12") = Int(Rnd * 200)
Все заполняется одинаковыми числами. Тоесть генератор срабатывает всего раз. Пожалуйста помогите оптимизировать и разобраться.

Приложение:
Sub gener()
Randomize 100
ActiveSheet.Range("C2") = Int(Rnd * 200)
ActiveSheet.Range("C3") = Int(Rnd * 200)
ActiveSheet.Range("C4") = Int(Rnd * 200)
ActiveSheet.Range("C5") = Int(Rnd * 200)
ActiveSheet.Range("C6") = Int(Rnd * 200)
ActiveSheet.Range("C7") = Int(Rnd * 200)
ActiveSheet.Range("C8") = Int(Rnd * 200)
ActiveSheet.Range("C9") = Int(Rnd * 200)
ActiveSheet.Range("C10") = Int(Rnd * 200)
ActiveSheet.Range("C11") = Int(Rnd * 200)
ActiveSheet.Range("C12") = Int(Rnd * 200)
ActiveSheet.Range("D2") = Int(Rnd * 200)
ActiveSheet.Range("D3") = Int(Rnd * 200)
ActiveSheet.Range("D4") = Int(Rnd * 200)
ActiveSheet.Range("D5") = Int(Rnd * 200)
ActiveSheet.Range("D6") = Int(Rnd * 200)
ActiveSheet.Range("D7") = Int(Rnd * 200)
ActiveSheet.Range("D8") = Int(Rnd * 200)
ActiveSheet.Range("D9") = Int(Rnd * 200)
ActiveSheet.Range("D10") = Int(Rnd * 200)
ActiveSheet.Range("D11") = Int(Rnd * 200)
ActiveSheet.Range("D12") = Int(Rnd * 200)
ActiveSheet.Range("E2") = Int(Rnd * 200)
ActiveSheet.Range("E3") = Int(Rnd * 200)
ActiveSheet.Range("E4") = Int(Rnd * 200)
ActiveSheet.Range("E5") = Int(Rnd * 200)
ActiveSheet.Range("E6") = Int(Rnd * 200)
ActiveSheet.Range("E7") = Int(Rnd * 200)
ActiveSheet.Range("E8") = Int(Rnd * 200)
ActiveSheet.Range("E9") = Int(Rnd * 200)
ActiveSheet.Range("E10") = Int(Rnd * 200)
ActiveSheet.Range("E11") = Int(Rnd * 200)
ActiveSheet.Range("E12") = Int(Rnd * 200)
End Sub

Обсуждение

Неизвестный
19.09.2009, 03:21
общий
это ответ
Здравствуйте, Dimon4ik.
Даже не знаю, что пояснять. В вашем варианте нужно делать так:
Код:
Sub gener()
Dim oCell As Range 'переменная для перебора ячеек
Dim oRng As Range 'Переменная для всего диапазона

Set oRng = ActiveSheet.Range("C2:E12") 'Определяем диапазон
Randomize 100 'инициализируем генератор случайных чисел
'Перебираем все ячейки, записывая в них случайное число от 0 до 199
For Each oCell In oRng.Cells
oCell = Int(Rnd * 200)
Next oCell
End Sub
5
Спасибо! Именно то, что надо!
Форма ответа