-2

有没有人发现使用嵌套的 For Each 循环给定的命名范围一个障碍?

这是我试图使其工作的情况,认为既然命名范围可以帮助(对我)知道哪个属于什么。

虚构业务的要求有一个程序名称 [名为 ListofPrograms],它被分配一种颜色(有 9 个),每天 [名为 ListofDates](超过 10 天)随机分配数量的澳大利亚奶牛 [名为 ListofCows](out 5) 被放置在彩色程序中,供学生兽医测试,以向他们的老师展示他们的学术研究和临床成果。

这里是我如何做到这一点的 VBA 代码。我现在使用 Debug.Print,因为我不确定如何以这种方式成功填充 Sheets("Outcome")。

 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 开始。

任何建议我可以如何改进这一点,谢谢,彼得。

4

1 回答 1

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)
于 2013-04-07T12:39:09.827 回答