[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『エラーを見つけて修正する処理の高速化』(ka)
いつもお世話になっております。
「数値が文字列として保存されています」というエラーが出ている箇所を探し出して文字列を数値に変換するというコードを作成したいです。
(エラーは無視しないで数値に変換する必要があります)
現在のコードが↓なのですが大変時間がかかるので
処理を早くしたいです。
使えそうな関数やその他方法があればどうぞご教授よろしくお願いいたします。
Dim Rng As Range
For Each Rng In ActiveSheet.UsedRange
If Rng.Errors.Item(xlNumberAsText).Value = True Then
Rng.Value = Val(Rng.Value)
End If
Next
< 使用 Excel:Excel2003、使用 OS:Windows7 >
該当警告のある領域と、無関係な領域に極端に差があるのならよりも
ユーザーに領域を選択させて、その中で検索すれば短縮出来ると思います。
エラー対策、行列選択される危険性も考えるとこんな感じでしょうか。
If TypeName(Selection) = "Range" Then For Each Rng In Intersect(Selection, ActiveSheet.UsedRange).Address ・・・
(名無し) 2018/09/21(金) 10:30
数式とかの結果とかではないのなら、 データ→区切り位置→完了 で済むと思うけど? 実際、データがどうなってるのか知らないけど。 (BJ) 2018/09/21(金) 11:19
ユーザーに領域選択してもらうというのが難しく、また配列については文字列と数値が入り混じっていたので断念したのですが、
特定の行列に固定するというのと、Intersectメソッドにヒントを得て
だいぶと処理を早くすることができました!
For Eachで回す場合の範囲の絞り方が分からなかったのでIntersectで絞れることがわかり
大変助かりました。ありがとうございました!!
(ka) 2018/09/21(金) 12:54
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.