循环中的不规则错误

时间:2017-08-03 07:27:17

标签: excel vba excel-vba

我正在使用一个简单的If循环。我有一个按钮,我在后面打了几个功能。

这里的问题是当我点击按钮时,函数thisworkbook.G70没有正确执行。

我总是只为前11列打印结果。任何人都可以说出原因是什么。 ?

这是我正在使用的代码,

Sub G1()
Dim i               As Long
Dim totalrows      As Long
Dim ws              As Worksheet
Dim DeltaDays       As Long
Set ws = Sheets("PSW")
totalrows = Range("A5").End(xlDown).Row
With ws
For i = 5 To totalrows
If .Cells(i, 27).Value = "" Then
.Cells(i, 28).Value = "N/A"
Else
DeltaDays = DateDiff("d", .Cells(i, 27).Value, .Cells(i, 23).Value)
If DeltaDays = 0 Then
.Cells(i, 28).Value = "G1 OK"
.Cells(i, 28).Interior.Color = RGB(69, 139, 0)
ElseIf DeltaDays < 0 Then
.Cells(i, 28).Value = "G1 OK(R)"
.Cells(i, 28).Interior.Color = RGB(127, 255, 0)
ElseIf DeltaDays > 0 Then
.Cells(i, 28).Value = "G1 NOK"
.Cells(i, 28).Interior.Color = RGB(255, 0, 0)
End If
End If
Next i
End With
MsgBox ("G1 Mismatch found")
End Sub

如果我在不使用按钮的情况下运行此代码,那么它正常运行。

使用该按钮,它不会执行完整的代码。

任何人都可以告诉我如何调试此错误。

1 个答案:

答案 0 :(得分:1)

直接问题似乎出现在这条线上......

totalrows = Range("A5").End(xlDown).Row

还要始终正确缩进代码,使其更具可读性。

尝试这样......

Sub G1()
Dim i               As Long
Dim totalrows      As Long
Dim ws              As Worksheet
Dim DeltaDays       As Long
Set ws = Sheets("PSW")    
With ws
    totalrows = .Range("A5").End(xlDown).Row
    For i = 5 To totalrows
        If .Cells(i, 27).Value = "" Then
            .Cells(i, 28).Value = "N/A"
        Else
            DeltaDays = DateDiff("d", .Cells(i, 27).Value, .Cells(i, 23).Value)
            If DeltaDays = 0 Then
                .Cells(i, 28).Value = "G1 OK"
                .Cells(i, 28).Interior.Color = RGB(69, 139, 0)
            ElseIf DeltaDays < 0 Then
                .Cells(i, 28).Value = "G1 OK(R)"
                .Cells(i, 28).Interior.Color = RGB(127, 255, 0)
            ElseIf DeltaDays > 0 Then
                .Cells(i, 28).Value = "G1 NOK"
                .Cells(i, 28).Interior.Color = RGB(255, 0, 0)
            End If
        End If
    Next i
End With
MsgBox ("G1 Mismatch found")
End Sub