テキストに格納されている数値を複数のワークシートの数値に変換しようとしています。私の問題は、私が一緒に手錠をかけたコードが過度の時間を費やしているようだということです。私は必要なワークシートと範囲をループするFor Eachステートメントを使用しています。それはExcelをクラッシュさせない、それはちょうど永遠に一見を走り続ける。For Eachステートメントで数値としてテキストとして格納された数値を変換する
Sub ConvertTextToNumber()
Application.ScreenUpdating = False
Dim WshtNames As Variant
Dim WshtNameCrnt As Variant
Dim r As Range
WshtNames = Array("Financial Data", "Site Data ", "Org Data", "Program Data")
For Each WshtNameCrnt In WshtNames
On Error Resume Next
For Each r In Worksheets(WshtNameCrnt).UsedRange.SpecialCells(xlCellTypeConstants)
If IsNumeric(r) Then r.Value = Val(r.Value)
Next
Next
Application.ScreenUpdating = False
End Sub
スクリプトの実行を停止して[デバッグ]をクリックすると、最初の[次へ]ステートメントに巻き込まれているようです。私は、値を変換するために使用しているメソッドは、必要以上に時間がかかりすぎるため、複数のシート上で実行する方がさらに悪いと思います。
私は、このプロセスをより速く実行するために、すべての提案には公開されています。前もって感謝します!
最後に使用された行と列を探し、配列にすべてをロードして、変更を加えてから値を戻します。スピードアップします。それはあなたがテストしているすべてのセルをサイクリングして変更することです。それは長い時間がかかります。配列は指数関数的に高速化します。 –
これは間違いなく私が想像するのを助けるでしょう。私のデータが特定のポイントを超えないことを知っているので、私の更新は私のために働く。しかし、私が時間を見つけたら、最後の行と列を見つけてここに投稿するようにコードを更新します。ありがとう!質問に入れる代わりに –
のように新しいコードを答えとして入れてください。 –