私は期間を得るために日付を含む2つのセルの間で簡単な減算をしています。 Data_pワークシートのRange( "4")内のすべてのクライアントは、それぞれの列にすべての受注日を持ちます。したがって、減算は2番目の日付と1番目の日付の間で行われ、結果はData_p_mgntに貼り付けられます。この関数は、クライアントごとに日付がなくなるまで実行する必要があります。IsEmptyが機能しなくなるまで、アイデアはありますか?
私は以下のコードを持っていますが、Data_pで空のセルが見つかった場合に停止しない理由はわかりません。どんな洞察にも感謝します。
Sub Prueba_Data_p_mgnt()
Sheets("Data_p_mgnt").Select
Range("B5").Select 'Starts in cell B5
Do Until IsEmpty(Worksheets("Data_p").Range("B5")) 'Checks if cells in Data_p are Empty or Blank
ActiveCell.FormulaR1C1 = "=Data_p!R[1]C-Data_p!RC" 'Makes the subtraction between cells
ActiveCell.Offset(1, 0).Range("A1").Select 'Moves down for paste the next period
Loop 'Loop until there's an Empty cell in Data_p
'Then should move to next client to the right and repeat until there are no more clients in row 4
End Sub
あなたは常に範囲(「B5」)をテストしています。 B5を空白に変更していない場合、永遠にループします。 –
あなたは 'Range(" B5 ")以外のものをテストしていません。 – Comintern
@ScottCranerには、[.Select'/'.Activate'の使用を避ける方法]があります。(http://stackoverflow.com/questions/10714251/how-to-avoid-using-select-in-excel- vba-macros)を使用して学習した内容を適用すると、問題が取り除かれます。あなたのコードをそのまま保つには、Do Is until IsEmpty(ActiveCell)をしたいのですが、そうしないで、範囲を使用してください。セル/範囲を動的にループする方法を調べるだけです。 – BruceWayne