我已经用于每个循环通过我在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
请帮我出这个错误的。
最好发布所有的代码,我们更容易找到问题的核心 – CallumDA
@CallumDA通常,我会同意你的看法。但在这种情况下,它可能与代码无关,而是单元格的“.Value”。如果'wcell.Value'包含错误值,例如'#REF!'或'#DIV/0!'或'#VALUE',那么'If wcell.Value = maxwindsp Then'将失败,因为VBA无法将错误与' maxwindsp'(不管那可能是什么)。因此,OP将不得不包含一些错误处理,如'If IsError(wcell.Value)Then'(VBA应该如何处理包含错误值的单元格)。 – Ralph
在你的循环中'对于每个wcell在warr.Cells'中,你正在检查每个'wcell'(也在你的第一个If中)。然而,在你的第二个如果你切换到'细胞'? –