'如果'语句中的Do循环types不匹配

我已经search了networking,试图找出为什么我在我的If语句中出现types不匹配的错误,但似乎无法让我的头缠到它。 任何帮助将不胜感激,并提前感谢。 顺便说一下, i整数是在代码的前一部分中声明的。

 Do While i < 25000 j = 4 Range("AV4:AV550").Select Selection.Copy Range("AU4").Select Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _ :=False, Transpose:=False 'Check for a new high value Do Until j = 551 If Range("AX" & j).Value < Range("AS" & j).Value Then Range("AX" & j) = Range("AS" & j) End If j = j + 1 Loop Range("AL4:AR550").Calculate i = i + 1 Loop 

更新If语句以仅比较值:

If Val(Range("AX" & j).Value) < Val(Range("AS" & j).Value) Then


 Option Explicit Public Sub doStuff() Dim i As Long, j As Long For i = 0 To 25000 Range("AV4:AV550").Copy Range("AU4").PasteSpecial Paste:=xlPasteValues 'Check for a new high value For j = 4 To 551 'check for NULL If IsNull(Range("AX" & j).Value) Then Range("AX" & j).Value = vbNullString If IsNull(Range("AS" & j).Value) Then Range("AS" & j).Value = vbNullString 'remove special characters Range("AX" & j).Value = WorksheetFunction.Clean(Trim(Range("AX" & j).Value)) Range("AS" & j).Value = WorksheetFunction.Clean(Trim(Range("AS" & j).Value)) If Val(Range("AX" & j).Value) < Val(Range("AS" & j).Value) Then Range("AX" & j) = Range("AS" & j) End If Next Range("AL4:AR550").Calculate Next End Sub 

 'Val() extracts any numbers it finds at the start of a string and it stops at first alpha Public Sub testVal() Debug.Print "test" '---> "test" Debug.Print Val("test") '---> 0 Debug.Print Val("123test") '---> 123 Debug.Print Val("test456") '---> 0 End Sub 

在错误恢复下一个做的伎俩。