我正在使用一个简单的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
如果我在不使用按钮的情况下运行此代码,那么它正常运行。
使用该按钮,它不会执行完整的代码。
任何人都可以告诉我如何调试此错误。
答案 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