Excel VBA嵌套使用命名范围的每个循环

时间:2013-04-07 06:02:30

标签: excel-vba foreach named-ranges vba excel

是否有人发现使用嵌套的For Each Loops给定的命名范围是障碍?

这是我试图让它发挥作用的一种情况,认为既然命名范围可以帮助(对我来说)知道哪些属于什么。

制作业务的要求有一个程序名称[名为ListofPrograms],它被分配一种颜色(有9个),每天[命名为ListofDates](超过10天)随机分配的澳大利亚奶牛数[名为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

以下是立即窗口中显示的片段。

 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

我不认为False是RANDBETWEEN的好回应,我注意到它从6开始而不是从1开始。

任何建议我如何改进这个感谢,彼得。

1 个答案:

答案 0 :(得分:0)

您要进入即时窗口的所有内容都是检查公式R1C1是否等于字符串“= RANDBETWEEN(1,5)”。我怀疑这不是你需要的,你想要一个1到5之间的随机数。

如果您需要存储价值,请在debug.print中使用以下内容:

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

或者,如果您不需要保存的值:

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