|
▼アラユタン さん:
>自己解決致しました。
>Sub Sample()
>
> For Each sh In ActiveWorkbook.Worksheets
> For Each xCell In Worksheets(sh.name).Range("A1:A100")
> xCell.Value = xCell.Value
> Next xCell
> Next sh
>
>End Sub
>
>上記にて欲しい結果となりました。
なあんだ、A列の表示形式は「文字列」じゃなかったんですか
>ただ処理速度がものすごく遅いのですが、
>改善できそうな箇所はないでしょうか。
1.まず、変数は型をきちんとつけて宣言しましょう。
2.範囲.Value = 範囲.Value で 数値になるのなら、1セルずつLoopしなくても
一括でいいはずですよ
3.セルに対する処理はできるだけ一回で済ませたほうがいいのですが、
今回のように 範囲.Value = 範囲.Value が処理のほとんどであるような
ときは、画面更新を制御するといいかもしれない。
Option Explicit
Sub Sample()
Dim sh As Worksheet '----(1)
Application.ScreenUpdating = False '----(3)
For Each sh In ActiveWorkbook.Worksheets
With sh.Range("A1:A1000")
.Value = .Value '----(2)
End With
Next sh
Application.ScreenUpdating = True '----(3)
End Sub
|
|