次の 1、3、6 か月間 (など) のマシンのコストを合計するレポートを本質的にループする (私の最初の) カスタム関数を作成しようとしています。
関数は値を返しますが、これらの値は正しくありません。さらに問題なのは、カスタム関数を含むセルで double を使用すると、カスタム関数を使用する周囲のセルの値が変更されることです。
私が扱っているコードは次のとおりです。
Option Explicit
Dim months As Integer 'a month is considered as 30 days
Dim cost As Long
Dim FleetData As Range
Dim rowCounter As Long
Dim lastRow As Long
Dim firstRow As Long
Dim component As Range
Dim dateOfAction As Range
Dim totalApprox As Range
Dim dateHorizon As Date 'Date to which the user wants to total the maintenance cost for
Private Function totalCosts(xMonths As Range)
'Dim totalCosts As Long
Application.Volatile
dateHorizon = Date + (30 * months)
firstRow = [A10].Row
rowCounter = firstRow
lastRow = Range("A65000").End(xlUp).Row
Set FleetData = [A10:S14]
If IsNumeric(xMonths.Value) Then months = xMonths.Value Else
If IsDate(xMonths.Value) Then months = (xMonths.Value - Date) / 30
cost = 0
Do While rowCounter < lastRow
Set component = Range(Cells(rowCounter, 1), Cells(rowCounter, 19))
Set dateOfAction = Cells(rowCounter, 7)
Set totalApprox = Cells(rowCounter, 12)
If dateOfAction <= dateHorizon Then
cost = cost + totalApprox
End If
totalCosts = cost
rowCounter = rowCounter + 1
Loop
End Function
そして、使用しているデータは次のとおりです。
DateOfAction totalApprox
5/07/2014 $30,068.62
24/05/2005 $6,300.00
5/07/2012 $29,742.00
5/07/2012 $4,360.28
27/12/2012 $5,555.89
セルをクリックすると、値が移動するように見えますが、識別可能な順序ではありません。
グーグルしてここを見ましたが、これまでのところ問題を解決しているようには見えません。
どんな助けでも大歓迎です!