1

次のコードは、プロジェクト アイテムのリストに対して sumif ワークシート関数を実行し、パイプラインと呼ばれる別のシートに各プロジェクトの合計キャッシュ フローを書き込むことを意図しています。

ただし、ワークシート関数は実行時エラー 1004「メソッド 'Range of object '_Global' に失敗しました。

コードが修正され (以下の回答を参照)、実行時エラーは修正されましたが、それでも目的の結果は生成されません。最後の回答に基づいて自分でコードを変更しましたが、それを機能させるために最後のビットが欠けていると思います。わかりやすくするために、コードが現在生成するもののスクリーンショットを添付しました。

ここに画像の説明を入力

まだ機能していない 2 つのこと: シートの列 B に、ソース シートに存在するプロジェクトのプロジェクト番号を表示したいと思います (この例では、B8 の値は 1、B9 の値は 2、B10 の値は 3 である必要があります)。 3つのプロジェクトがあります)。次に、H 列の合計のリストは、値 0 を返すのではなく、合計するプロジェクトがなくなったときに停止する必要があります。

わかりやすくするために、これはパイプライン シートがどのように見えるかのスクリーンショットです。

ここに画像の説明を入力

何か助けてください。以下の新しいコード:

    Sub Write_Pipeline()
    'Sums up revenue of each project in the Input section to display expected cash flow
    Dim ip As Worksheet, pl As Worksheet, Start As Range, Length As Integer, Cnt As Integer, PH As Integer
    Dim SelectRange As Excel.Range
    Dim SumRange As Excel.Range
    Dim cell As Excel.Range

    Set ip = Worksheets("Input")
    Set pl = Worksheets("Pipeline")
    Set Start = pl.Range("B8")
    Start = 1
    Cnt = 1
    Length = 151
    Set SelectRange = ip.Range("B26:B151")
    Set SumRange = ip.Range("Y26:Y151")

    For Each cell In pl.Range("H8").Resize(Length)
        cell.Value = Application.WorksheetFunction.SumIf(SelectRange, Start, SumRange)
        PH = Start.Value
        Start = Start.Offset(1, 0)
        Start = PH + 1
    Next cell
End Sub
4

2 に答える 2