excel VBA 对于每个循环范围错误#VALUE

迈赫迪·卡马利

我已经在excel VBA中通过定义的函数使用了每个循环,但是函数输出为#VALUE。我认为错误在我的循环内,如下所示:

谢谢大家的评论。我的功能代码如下,我已经更正了我发送的原始代码:

Public Function MaxWindDir(warr As Range) As Integer
Dim WindDir() As Integer
Dim maxwindsp As Integer
Dim wcell As Range
Dim i As Integer
Dim MaxDir As Integer
i = 0
maxwindsp = Application.Max(warr)
For Each wcell In warr
    If wcell.Value = maxwindsp Then
        WindDir(i) = Range("J" & wcell.Row).Value
        i = i + 1
    End If
Next wcell
If i = 1 Then
    MaxWindDir = WindDir(0)
Else
    MaxDir = WindDir(0)
    For i = 0 To UBound(WindDir)
        If WindDir(i) >= MaxDir Then
            MaxDir = WindDir(i)
        End If
    Next i
    MaxWindDir = MaxDir
End If
End Function

请帮助我摆脱这个错误。

安比

发生错误是因为您的WindDir数组未标注尺寸,因此这些行WindDir(i)...会引发错误。

在循环中迭代地重新调整数组的大小并不是很好的形式,但是ReDim Preserve代码中下面添加的行向您展示了我的意思:

For Each wcell In warr
    If wcell.Value = maxwindsp Then
        ReDim Preserve WindDir(i)
        WindDir(i) = Range("J" & wcell.Row).Value
        i = i + 1
    End If
Next wcell

您的帖子也提出了其他几点:

  1. 或许可以考虑在开发 UDF 时从模块中调用它们。这样,任何错误都会更有意义地显示给您。如果您运行以下例程,按照发布的方式调用您的函数,将立即突出显示无维数组问题:

    Public Sub RunMe()
        Dim r As Range
    
        Set r = Sheet1.Range("K2:K19") 'or whatever the range is
        Debug.Print MaxWindDir(r)
    End Sub
    
  2. 为什么要为数组烦恼呢?鉴于您正在访问WindDir第一个循环中值,为什么不只检查那里的最大值?这样,您的整个功能可能只是:

    Public Function MaxWindDir(warr As Range) As Long
        Dim wcell As Range
        Dim maxWindSpd As Long
        Dim windSpd As Long
        Dim windDir As Long
    
        maxWindSpd = Application.Max(warr)
        For Each wcell In warr.Cells
            windSpd = wcell.Value2
            If windSpd = maxWindSpd Then
                windDir = warr.Worksheet.Cells(wcell.Row, "J").Value2
                If windDir >= MaxWindDir Then MaxWindDir = windDir
            End If
        Next
    
    End Function
    
  3. 注意@Comitern 关于Range限定符的观点(以及我在保持对您发布的代码的忠实同时仍然限定范围的相当笨拙的尝试)。

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

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

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章