2

例として、初期値とクリティカルパスを示す最もクリーン300な方法を理解しようとしています。これらの値は両方とも、シートへの入力によって変更できます。x1.5y

これらの値とともに、 と のリソースがaありbます。このシナリオでは、行内のセルをa塗りつぶし、塗りつぶします。200b100

私が前xにほのめかしたように、変更することyができます。そして、が満たされるだけです。y2a150b150y1a300

現在、Ifステートメントを使用していますが、これは面倒であり、考えられるすべての結果をカバーするために無限のコードにつながる可能性があると感じており、より良い解決策が必要です.

これは、私が現在達成していることの単純な例です。

Private Sub Example()

    Dim ActiveWB As Worksheet
    Set ActiveWB = ActiveWorkbook.Sheets("Sheet1")
    Dim cell As Range
    Dim a, b, x, y As Double

    x = ActiveWB.Range("A1").Value
    y = ActiveWB.Range("A2").Value
    a = x / y
    b = x - a

        For Each cell In ActiveWB.Range(Cells(3, 1), Cells(3, a))

            If (cell.Column >= 0) And (cell.Column <> x) Then

                If (y = 1) And (a > 0) Then
                   cell.Value = "a"
                    a = a - 1

                ElseIf (y > 1) And (y < 2) And (a > 0) Then
                   cell.Value = "a"
                   a = a - 1
                   If (b > 0) Then
                        cell.Offset(1, 0).Value = "b"
                        b = b - 1
                   End If

               ElseIf (y >= 2) And (y < 2.5) And (a > 0) Then
                   cell.Value = "a"
                   a = a - 1
                   If (b > 0) Then
                        cell.Offset(1, 0).Value = "b"
                        b = b - 1
                   End If

                '..... and so on......

                End If

            End If

        Next cell

End Sub

どんな提案でも大歓迎です。お時間をいただきありがとうございます。Y.

4

2 に答える 2