- ベストアンサー
このコードに3行を追記しましたら、動作がだいぶ遅くなってしまった!
Windows XP Home Edition Service Pack 3 Office XP Personal 2002 Excel 2002 下記コードについて2点お伺いさせて下さいませ。 (1)●の3行を追記しましたら、動作がだいぶ遅くなりましたが、仕方ありませんでしょうか? 記述する順序がいけませんでしょうか? (2)●■が実行されません。 よろしくご教示お願い致します。 Sub TEST() Dim r As Range On Error Resume Next With Worksheets(Worksheets.Count) For Each r In .Range(Range("A2").End(xlDown).Offset(3, 2), .Range("A65536").End(xlUp).Offset(0, 25)) If r.Cells.Value >= 2 And r.Cells.Value <> 0 And r.Cells.Value <> "" Then With r.Offset(-38, 0) .Font.ColorIndex = 10 '緑色にする .Interior.ColorIndex = 36 '黄色にする .Borders.LineStyle = xlContinuous '● .Borders.Weight = xlMedium '●太線 .ColorIndex = 5 '●■紺色 '←ここが動作しません End With End If Next r End With
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
このあたりを参考にして、For文の前で画面更新をFALSEにして、End Withの後で画面更新をTrueにしてみては。 http://www.relief.jp/itnote/archives/001259.php
その他の回答 (3)
- watabe007
- ベストアンサー率62% (476/760)
>For Each r In .Range(Range("A2").End(xlDown).Offset(3, 2 .Range(.Range("A2") ↑ .(カンマが抜けている) >.ColorIndex = 5 '●■紺色 '←ここが動作しません 罫線の色なら .Borders.ColorIndex = 5 With Worksheets(Worksheets.Count) For Each r In .Range(.Range("A2").End(xlDown).Offset(3, 2), .Range("A65536").End(xlUp).Offset(0, 25)) If r.Cells.Value >= 2 And r.Cells.Value <> 0 And r.Cells.Value <> "" Then With r.Offset(-38, 0) .Font.ColorIndex = 10 .Interior.ColorIndex = 36 .Borders.LineStyle = xlContinuous .Borders.Weight = xlMedium .Borders.ColorIndex = 5 End With End If Next r End With
お礼
早速のご回答誠に有難うございました。 抜けてました! これで、完璧になりました。 皆様が良回答でございました。
- Saturn5
- ベストアンサー率45% (2270/4952)
Borders..ColorIndex = 5 ではないでしょうか? 遅くなっているのはループ回数が固定で多いからだと思います。 実際に使用されているセルはもっと少ないのではないでしょうか? ループ回数は動的にデータ数に合わせた方が速いです。 また、全体的には条件書式で処理できるようにも思えます。
お礼
早速のご回答誠に有難うございました。 おっしゃられ通りです。 今後、工夫してみます。
- nagare
- ベストアンサー率33% (280/831)
2の方ですが、記述が違いますよ .Interior.ColorIndex = 5 .Borders.LineStyle(罫線の場所) = xlContinuous http://officetanaka.net/excel/vba/cell/cell07.htm ※どれくらい遅くなっているのでしょうか?
お礼
早速のご回答誠に有難うございました。 ずばりのページがあったんですね。 .Borders.ColorIndex = 5 でございました。
補足
>※どれくらい遅くなっているのでしょうか? 1.6倍ぐらいだと思います。 No.1様の方法で、少し速くなりました。 有難うございました。
お礼
早速のご回答誠に有難うございます。 まだ、時間がかかるかも知れませんが、なんとなくわかってきました。 でも 「アクティブセルのある行列を目立たせる」 これ、・・・ ですね! 行けます。