Vba SumIf给出的答案没有小数

Vba SumIf给出的答案没有小数,vba,excel,sumifs,Vba,Excel,Sumifs,我正在使用VBA对SumRange中的单元格值求和,因为它们是正数。代码可以工作,但是,它不会在应该返回小数位的答案时返回小数位 RecebimentosValor = WorksheetFunction.SumIf(SumRange, ">0") 请务必使用Double: Sub ytrewq() Dim SumRange As Range, RecebimentosValor As Double Set SumRange = Range("A1:A10") R

我正在使用VBA对SumRange中的单元格值求和,因为它们是正数。代码可以工作,但是,它不会在应该返回小数位的答案时返回小数位

RecebimentosValor = WorksheetFunction.SumIf(SumRange, ">0")

请务必使用Double:

Sub ytrewq()
    Dim SumRange As Range, RecebimentosValor As Double
    Set SumRange = Range("A1:A10")
    RecebimentosValor = WorksheetFunction.SumIf(SumRange, ">0")
    MsgBox RecebimentosValor
End Sub

我看不出有什么问题

Sub M_snb()
 y = [sum((A1:A12>0)*(A1:A12))]
 y = Application.SumIf(Range("A1:A12"), ">0")
End Sub

不总是这样。这取决于你的投入。如果您的输入是十进制格式,那么
输出将以十进制形式生成。简单的数学规则。

receibimentosvalor
应声明为
Double
Single
数据类型以保留小数点。这样
y
就隐式成为
变量
数据类型。它也会起作用。但是,如果可以避免这种类型总是更好的。没有有效的理由避免变量。否则,它们就不会在VBA中被发明或引入。如果您已经编写了很长时间的代码,您就会意识到使用变量数据类型有其优点和缺点。对于结构良好的例程,最好知道正在处理的数据类型。这将帮助您预测和控制更多的运行时错误,并且更易于调试和维护。那时候你会意识到缺点比优点更重要。对我来说,我并不是说这对所有人都是真实的。