|
>以下のコードを実行するとたまに実行エラー13となります。
>
>なぜ?
Excel2000の場合、
VBAでワークシート関数を使う場合の配列要素数に限界があります。
5,461個までです。
これを超えると エラーコード 13 の型不一致エラーになります。
『たまに』なるのは、処理するUsedRangeのセル範囲数が限界値を超えた時だけ
起こるからです。
敢えてFormulaプロパティを使う必要がなければ、回避策はあります。
With ActiveSheet.UsedRange
.Value = Application.Trim(.Cells)
.Value = Application.Asc(.Cells)
End With
TrimやAsc関数の引数に配列を与えず、セル範囲を与える事で回避します。
『FormulaプロパティではなくValueプロパティで良ければ』ですが。
>それと私のコードと皆さんの提示しているコードの違いがわかりません。
貴方のコードは配列、あるいは複数セル範囲をまとめて処理する事に対応するため
Applicationクラスのワークシート関数を使っています。
他回答で提示されたコードは単独文字列を処理するために
VBA関数が使われたものです。
配列などに対応するにはLoop処理が必要です。
目的に応じて『違い』があるわけですから
参考 にされれば良いのではないでしょうか。
|
|