Vba 函数不工作,因为我使用日期?

Vba 函数不工作,因为我使用日期?,vba,excel,Vba,Excel,我正试图编写一个依赖于日期的函数,但我无法让它工作。Excel不断告诉我,此公式中使用的值的数据类型错误。所以它必须是日期,因为我有另一个函数,除了添加一个datevalue之外,它是完全相同的 有人在Excel单元格C10中写了一个日期,然后我不想从表(在同一工作簿的另一张表上)中总结某些数字(预测通货膨胀率,p列),在该表中,它取决于开始日期(I列)和结束日期(J列) 我已经检查过Excel是否将单元格C10解释为日期,但有序列号 但我不明白为什么这是一个问题,因为我用它来比较其他日期(序列

我正试图编写一个依赖于日期的函数,但我无法让它工作。Excel不断告诉我,此公式中使用的值的数据类型错误。所以它必须是日期,因为我有另一个函数,除了添加一个datevalue之外,它是完全相同的

有人在Excel单元格C10中写了一个日期,然后我不想从表(在同一工作簿的另一张表上)中总结某些数字(预测通货膨胀率,p列),在该表中,它取决于开始日期(I列)和结束日期(J列)

我已经检查过Excel是否将单元格C10解释为日期,但有序列号

但我不明白为什么这是一个问题,因为我用它来比较其他日期(序列号)

公共函数FetchFactorInflation(产品为字符串,ArgName为字符串)为双精度
作为日期的尺寸基准
数据=日期值(工作表(“InputAriff”).范围(“C10”).值)
Dim MinDatum,MaxDatum为双精度
MinDatum=“=”&基准
FetchFactorInflation=Application.SumIfs(工作表(“关税”).Range(“P:P”)_
工作表(“关税”)。范围(“I:I”)、MinDatum、_
工作表(“关税”)。范围(“J:J”)、MaxDatum、_
工作表(“关税”)。范围(“K:K”)、产品、_
工作表(“关税”)。范围(“L:L”)、ArgName)
端函数

错误的数据类型来自这里:

MaxDatum = ">=" & Datum
MaxDatum是双精度的,您将为它指定
=
。无法将其转换为
双精度
。试着绕过去

最快的解决方案是这样写:

Dim MinDatum,MaxDatum

而不是

Dim MinDatum,MaxDatum为双精度


因此,
MaxDatum
可以很容易地转换为您所需的数据,因为它是可变的,而且
MinDatum

错误的数据类型来自这里:

MaxDatum = ">=" & Datum
MaxDatum是双精度的,您将为它指定
=
。无法将其转换为
双精度
。试着绕过去

最快的解决方案是这样写:

Dim MinDatum,MaxDatum

而不是

Dim MinDatum,MaxDatum为双精度


因此,
MaxDatum
将很容易转换为您需要的内容,因为它将是变量以及
MinDatum

首先,定义
Dim MinDatum,MaxDatum为Double
意味着
MaxDatum为Double
MinDatum为variant
,它需要是
Dim MinDatum为Double,MaxDatum为双精度
。其次,您需要将日期转换为双精度,如
MinDatum=CDbl(Datum)
。最后,当您使用
SumIfs
功能进行检查时,您将使用
工作表(“关税”).Range(“I:I”),“>=”&MinDatum
。感谢您的回答,它解决了我的问题!首先,定义
Dim MinDatum,MaxDatum为Double
意味着
MaxDatum为Double
MinDatum为Variant
,它需要
Dim MinDatum为Double,MaxDatum为Double
。其次,您需要将日期转换为双精度,如
MinDatum=CDbl(Datum)
。最后,当您使用
SumIfs
功能进行检查时,您将使用
工作表(“关税”).Range(“I:I”),“>=”&MinDatum
。感谢您的回答,它解决了我的问题!