-2

名前付き範囲が障害になっている場合、ネストされた For Each ループを使用していることに気付いた人はいますか?

これは、名前付き範囲が(私にとって)どれが何に属しているかを知るのに役立つので、私がそれを機能させようとしている状況です。

架空のビジネスの要件には、プログラム名 [ListofPrograms という名前] があり、色が割り当てられ (9 個あります)、[ListofDates という名前] (10 日間以上) に毎日 [ListofDates という名前] 5) は色付きのプログラムに配置され、獣医学生がテストを行い、学術研究と臨床結果を教師に示すことができます。

ここに、私がそれをどのように行うことができたかのVBAコードがあります。この方法で Sheets("Outcome") を正常に設定する方法がわからないため、今のところ 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 からの良い応答だとは思いませんでした。1 からではなく 6 から続くことに注意してください。

これを改善するための提案があれば、ピーターに感謝します。

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 に答える