私は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'のようなエラー値が含まれている場合、VBAはエラーを ' maxwindsp'(それが何であれ)。したがって、OPには、If IsError(wcell.Value)Then Then(VBAはエラー値を含むセルで何を行うべきか)のようなエラー処理が含まれていなければなりません。 – Ralph
あなたのループで 'For each wcell In warr.Cells'であなたはそれぞれの' wcell'(あなたの最初のIfでも)をチェックしています。しかし、あなたの2番目の場合、 'cell'に切り替えるのですか? –