• ベストアンサー

このコードに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

質問者が選んだベストアンサー

  • ベストアンサー
  • SaKaKashi
  • ベストアンサー率24% (755/3136)
回答No.1

このあたりを参考にして、For文の前で画面更新をFALSEにして、End Withの後で画面更新をTrueにしてみては。 http://www.relief.jp/itnote/archives/001259.php

oshietecho-dai
質問者

お礼

早速のご回答誠に有難うございます。 まだ、時間がかかるかも知れませんが、なんとなくわかってきました。 でも 「アクティブセルのある行列を目立たせる」 これ、・・・ ですね! 行けます。

その他の回答 (3)

  • watabe007
  • ベストアンサー率62% (476/760)
回答No.4

>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

oshietecho-dai
質問者

お礼

早速のご回答誠に有難うございました。 抜けてました! これで、完璧になりました。 皆様が良回答でございました。

  • Saturn5
  • ベストアンサー率45% (2270/4952)
回答No.3

Borders..ColorIndex = 5 ではないでしょうか? 遅くなっているのはループ回数が固定で多いからだと思います。 実際に使用されているセルはもっと少ないのではないでしょうか? ループ回数は動的にデータ数に合わせた方が速いです。 また、全体的には条件書式で処理できるようにも思えます。

oshietecho-dai
質問者

お礼

早速のご回答誠に有難うございました。 おっしゃられ通りです。 今後、工夫してみます。

  • nagare
  • ベストアンサー率33% (280/831)
回答No.2

2の方ですが、記述が違いますよ .Interior.ColorIndex = 5 .Borders.LineStyle(罫線の場所) = xlContinuous http://officetanaka.net/excel/vba/cell/cell07.htm ※どれくらい遅くなっているのでしょうか?

oshietecho-dai
質問者

お礼

早速のご回答誠に有難うございました。 ずばりのページがあったんですね。 .Borders.ColorIndex = 5 でございました。

oshietecho-dai
質問者

補足

>※どれくらい遅くなっているのでしょうか? 1.6倍ぐらいだと思います。 No.1様の方法で、少し速くなりました。 有難うございました。

関連するQ&A