Do循环类型中的“ If”语句不匹配

电池514

我在网上搜索了一下,以弄清楚为什么我的If语句出现类型不匹配错误,但似乎无法解决这个问题。任何帮助将不胜感激,并在此先感谢。顺便说一下,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

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章