2013-04-07 1 views
-2

Кто-нибудь нашел использование вложенных для каждой петли, учитывая, что именованные диапазоны препятствуют?Excel VBA Вложенный для каждой петли с использованием именованных диапазонов

Вот ситуация, когда я пытаюсь заставить ее работать, думая, что так как именованные диапазоны могут быть полезны (для меня), чтобы знать, что принадлежит чему.

Требование созданного бизнеса имеет название программы [named ListProPrograms], которому присваивается цвет (имеет 9), каждый день [с именем ListofDates] (более 10 дней) случайное количество австралийских коров [named ListofCows] (из 5) помещаются в цветную программу для тестирования студенческими ветеринарами, чтобы продемонстрировать своим учителям их академические исследования и клинические результаты.

Здесь код VBA, как я мог это сделать. Я использовал Debug.Print на данный момент, так как я не уверен, как успешно заполнять листы («Результат») таким образом.

Option Explicit 
Sub CowsGenerator() 
Dim Programrng, Daterng, Cowsrng As Range 

With Sheets("Outcome") 
    For Each Programrng In Range("ListofPrograms") 
      For Each Daterng In Range("ListofDates") 
        For Each Cowsrng In Range("ListofCows") 
         Debug.Print Programrng.Value, Daterng.Value, Cowsrng.FormulaR1C1 = "=RANDBETWEEN(1,5)" 
        Next Cowsrng 
      Next Daterng 
    Next Programrng 
End With 
End Sub 

Вот фрагмент, показанный в окне Immediate.

6    1   False 
6    1   False 
6    2   False 
6    2   False 
6    2   False 
6    2   False 
6    2   False 
6    3   False 
6    3   False 

Я не думаю, что Ложные хороший ответ от RANDBETWEEN и я отмечаю, что продолжается от 6 и не с 1.

Любые предложения, как я могу улучшить эту благодарность, Питер.

+0

Что вы ожидаете 'Debug.Print Cowsrng.FormulaR1C1 = "= RANDBETWEEN (1,5)"' для печати? Если формула в 'Cowsrng' не является строкой' = RANDBETWEEN (1,5) ', тогда, конечно, она будет печатать' False' –

ответ

0

Все, что вы собираетесь зайти в ближайшее окно, это проверка, чтобы убедиться, что формула R1C1 равна строке «= RANDBETWEEN (1,5)». Я подозреваю, что это не то, что вам нужно, и вы хотите, случайное число от 1 до 5.

Используйте следующее в вашем debug.print если youneeded хранить значение:

Cowsrng.FormulaR1C1 = "=RANDBETWEEN(1,5)" 
Debug.Print Programrng.Value, Daterng.Value, Cowsrng.Value 

Или, если вам не нужно значение сохранено:

Debug.Print Programrng.Value, Daterng.Value, Application.workbookfunction.randbetween(1,5) 
+0

. Я буду проверять код завтра, glh. –