次のコードは、プロジェクト アイテムのリストに対して 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