【发布时间】:2011-06-13 16:45:48
【问题描述】:
下面的代码产生了错误的结果。在工作表上,我们使用了两种相同的日期格式(dd/mm/yyyy),但是当运行以下命令时,它似乎试图将 rev_date 解释为美国日期格式,同时解释 grid_date 作为正确的英国格式。
我们通过将工作表上的 rev_date 更改为美国格式对此进行了测试,在这种情况下它会产生正确的结果。
任何想法为什么我们需要将 rev_date 更改为美国格式,我们更愿意将其保留为英国?
Public Function GRIDSALES(rev_date As Date, grid_date As Date) As Double
Dim Order_Type As Range
Dim Final_Price As Range
Dim PaidAlt As Range
Dim Excl_Rev As Range
Dim PAmount1 As Range
Dim PMethod1 As Range
Dim PAmount2 As Range
Dim PayDate2 As Range
Dim PMethod2 As Range
Dim Vstatus As Range
Dim Team As Range
Application.Volatile (True)
Set Order_Type = Sheets("KRONOS").Range("$D:$D")
Set Final_Price = Sheets("KRONOS").Range("$H:$H")
Set PaidAlt = Sheets("KRONOS").Range("$I:$I")
Set Excl_Rev = Sheets("KRONOS").Range("$K:$K")
Set PAmount1 = Sheets("KRONOS").Range("$O:$O")
Set First_PD = Sheets("KRONOS").Range("$Q:$Q")
Set PMethod1 = Sheets("KRONOS").Range("$R:$R")
Set PAmount2 = Sheets("KRONOS").Range("$T:$T")
Set PayDate2 = Sheets("KRONOS").Range("$V:$V")
Set PMethod2 = Sheets("KRONOS").Range("$W:$W")
Set Vstatus = Sheets("KRONOS").Range("$DL:$DL")
Set Team = Sheets("KRONOS").Range("$DO:$DO")
GRIDSALES1 = Application.WorksheetFunction.SumIfs( _
PAmount1 _
, Team, "<>9" _
, Vstatus, "<>rejected", Vstatus, "<>unverified" _
, Excl_Rev, "<>1" _
, PMethod1, "<>Credit" _
, PMethod1, "<>Amendment" _
, PMethod1, "<>Pre-paid" _
, First_PD, ">=" & rev_date _
, First_PD, "<=" & Application.WorksheetFunction.EoMonth(grid_date, 0))
GRIDSALES = GRIDSALES1
结束函数
【问题讨论】: