Excel VBA嵌套For Each循环使用命名范围



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

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

化妆品企业的要求有一个项目名称[命名为ListofPrograms],该项目被分配了一种颜色(有9种),每天[命名为ListofDates](超过10天)随机分配数量的澳大利亚奶牛[命名为ListofCows](从5只牛中选出)被放置在彩色程序中,由学生兽医测试,向老师展示他们的学术研究和临床成果。

这里的VBA代码如何我可以做到这一点。我使用了Debug。现在打印,因为我不确定如何以这种方式成功地填充工作表("结果")。

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

有什么建议吗?谢谢,Peter。

您将在您的直接窗口中得到的所有内容是检查公式ar1c1是否等于字符串"=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)

相关内容

  • 没有找到相关文章

最新更新