VBA代码如果条件不满意,Stlll进入循环

时间:2016-08-18 13:43:42

标签: vba excel-vba excel

我的IF条件如下。 这里EntitySum是1.虽然条件不满意,但它是ifign into。

    Dim RowCount As Integer
Dim ColCount As Integer
Dim m, x As Integer
Dim EntitySum As Double
RowCount = Worksheets("Contribution").UsedRange.Rows.Count - 4
ColCount = Worksheets("Entities").UsedRange.Rows.Count - 4

m = 4

'outer loop for Rows
Do
EntitySum = 0
x = 6
m = m + 1
    'inner loop for Columns
    Do
    x = x + 1
    EntitySum = EntitySum + Worksheets("Contribution").Cells(m, x).Value
    Loop Until x = ColCount + 6
    If EntitySum <> 1 Then
        MsgBox "The Entity Contribution at Row " & m & " is not 100%. Please Fix it to proceed further."
        Exit Sub
    End If
Loop Until m = RowCount + 4

enter image description here

VBA有什么问题吗?

感谢您的回复。

谢谢, 丽塔

1 个答案:

答案 0 :(得分:1)

问题是即使您的屏幕截图显示EntitySum = 1的值,但事实并非如此。这是一种复制问题的简单方法

在单元格A1中输入此数字0.00000000000000001。您将看到Excel自动将其格式化为1E-17

现在试试这段代码

Sub Sample()
    Dim EntitySum As Double

    EntitySum = 1 + Range("A1")

    If EntitySum <> 1 Then
        MsgBox "A"
    End If
End Sub

现在EntitySum绝对不等于1,但如果将鼠标悬停在该变量上,它会将其显示为1。这是一个浮点问题。 Excel无法处理如此大的数字,因此它会产生问题。

要理解为什么它在您的情况下表现如此,您必须检查单元格Worksheets("Contribution").Cells(m, x).Value并查看它们具有哪种值。

enter image description here