[英]Runtime error in VBA Excel
我正在比較工作表中包含日期的D和E兩列。 E列在該行中有日期,有時沒有日期,有時有X。 我收到運行時錯誤
類型不匹配
誰能建議我的代碼出了什么問題。 ?
Sub datecompare()
Dim ws As Worksheet
Dim lRow As Long, i As Long
Dim zWeeks As Double, zcolour As Long
Dim Ztext As String
Set ws = Sheets("Preparation Sheet")
With ws
lRow = .range("D" & .Rows.Count).End(xlUp).Row
For i = 2 To lRow
zWeeks = DateDiff("ww", .range("E" & i).Value, .range("D" & i).Value)
If .range("A" & i).Value <> "" And .range("B" & i).Value <> "" And .range("E" & i).Value = "" Then
Ztext = "remaining"
zcolour = vbYellow
Cells(i, 7) = "Yellow"
ElseIf .range("B" & i).Value = "" And .range("E" & i).Value = "" Then
GoTo nextrow
ElseIf zWeeks < 4 Then
Ztext = " on time"
zcolour = vbGreen
Cells(i, 7) = "Green"
ElseIf zWeeks > 8 Then
Ztext = " delayed"
zcolour = vbRed
Cells(i, 7) = "Red"
ElseIf zWeeks > 4 < 8 Then
Ztext = "remaining"
zcolour = vbYellow
Cells(i, 7) = "Yellow"
End If
With .range("F" & i)
.Value = Ztext
.Interior.Color = zcolour
End With
nextrow:
Next i
End With
End Sub
錯誤發生在GoTo nextrow
並跳轉到下一個,而無需運行中間代碼。
我認為代碼將像這樣。
Sub datecompare()
Dim ws As Worksheet
Dim lRow As Long, i As Long
Dim zWeeks As Double, zcolour As Long
Dim Ztext As String
Set ws = Sheets("Preparation Sheet")
'Cells.Interior.Color = xlNone
With ws
lRow = .Range("D" & .Rows.Count).End(xlUp).Row
For i = 2 To lRow
If IsDate(.Range("E" & i).Value) And IsDate(.Range("D" & i).Value) Then
Else
GoTo nextrow
End If
zWeeks = DateDiff("ww", .Range("E" & i).Value, .Range("D" & i).Value)
If .Range("A" & i).Value <> "" And .Range("B" & i).Value <> "" And .Range("E" & i).Value = "" Then
Ztext = "remaining"
zcolour = vbYellow
Cells(i, 7) = "Yellow"
Else '<~~ .Range("A" & i).Value <> "" And .Range("B" & i).Value <> "" And .Range("E" & i).Value = "" true or false , this is false
If .Range("B" & i).Value = "" And .Range("E" & i).Value = "" Then
GoTo nextrow
Else '<~~ .Range("B" & i).Value = "" And .Range("E" & i).Value = "" Then true or false, this is false
'<~~ When the result is false, after code applied
If zWeeks < 4 Then
Ztext = " on time"
zcolour = vbGreen
Cells(i, 7) = "Green"
ElseIf zWeeks > 8 Then
Ztext = " delayed"
zcolour = vbRed
Cells(i, 7) = "Red"
ElseIf zWeeks >= 4 And zWeeks <= 8 Then
Ztext = "remaining"
zcolour = vbYellow
Cells(i, 7) = "Yellow"
End If
End If
End If
With .Range("F" & i)
.Value = Ztext
.Interior.Color = zcolour
End With
nextrow:
Next i
End With
End Sub
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.