0
Sub Test()
    Dim g1val As Integer
    g1val = 0

    For i = 3 To 27
        If g1val >= Cells(33, i).Value Then
            g1val = g1val
        ElseIf g1val < Cells(33, i).Value Then
            g1val = Cells(33, i).Value
        End If
    Next i
End Sub

在这里,当我将切换断点放在第 3 行并按 F8 执行时,在更快的执行中,'g1val' 不会获取任何值。当我执行没有任何断点的代码时也会发生同样的情况。你能帮忙吗????

4

2 回答 2

1

g1val = Cells(33,i).Value应该是 For 语句之后的第一行。

于 2013-09-28T04:58:11.243 回答
1

我可以想到您的代码可能无法正常工作的 3 个原因

  1. 您没有进行数字比较
  2. 您的 Cells 对象可能指的ActiveSheet可能不是您想要的工作表。完全限定您的单元格对象。
  3. 您的 Row 或 Column 值不正确

我还注意到一件事。您首先IF不是必需的,因为您正在设置g1valto的值g1val。您可以将代码编写为

Sub Test()
    Dim g1val As Long, i As Long
    Dim ws As Worksheet

    '~~> Change this to the relevant sheet
    Set ws = ThisWorkbook.Sheets("Sheet1")

    With ws
        For i = 3 To 27
            If g1val < Val(Trim(.Cells(33, i).Value)) Then _
            g1val = Val(Trim(.Cells(33, i).Value))
        Next i
    End With

    Debug.Print g1val 
End Sub
于 2013-09-28T05:06:44.553 回答