私は、範囲の最大値を見つけて、最大値が位置する行を返す簡単なコードを持っています。なんらかの理由で、Match
がError 2042
を返す場合がありますが、ほとんどの場合、正常に実行されます。探している値が同じ範囲の最大値である場合、範囲内で一致するものを見つけることができないのはどうですか?Application.Match()が矛盾しているのはなぜですか?
この範囲の値は、有効数字の多いパーセンテージです(例:0.992149823976789%)。
Sub test()
dim rng as range
Set rng = Range("A1:A100")
rng_max = application.max(rng)
max_row = application.match(cdbl(rng_max), rng.value, 0)
End Sub
を 'rng_max'が宣言、なぜあなたは' CDBL(rng_max) '適用されますされ、いつそれが起こるんどのように同じこと( 'rng'または' rng.value'のどちらかで、両方ではなく)で 'max'と' match'の両方を呼び出しますか? – GSerg
私はどこでもrng_maxを宣言していません。私はCDblを使っていますが、マッチで問題があることについてここで別の投稿を見ました。 rngの代わりにrng.valueを使用してみましたが、それが役立つかどうかを確認しましたが、いくつかの値は有効でしたが、明らかにすべてではありませんでした。それは何もしないかもしれないが、私はそれが必ずしも傷つけるとは思わなかった。 – user1964692
'rng_max'を何か(' Double'のような)として宣言してください。 'CDbl'を使わず、' max'と 'match'を同じもので呼んでください。 [浮動小数点数の計算は壊れていません](http://stackoverflow.com/q/588004/11683)、最初に値を前後に強制して、それらが正確に一致することを期待すると、あなたのためになります。 – GSerg