Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


25539 / 76732 ←次へ | 前へ→

【56531】Re:行を非表示にするときのスピードが遅い
回答  りん E-MAIL  - 08/6/20(金) 7:10 -

引用なし
パスワード
   あやたろう さん、おはようございます。

>以前はver.2000 を使っていたのですが、新ver(ver.2007?)を使うことになり、
>10000行程度の行のうち、
>該当しない行を非表示にしようとしていますが、
>かなりスピードが遅いのです。(>_<)

たとえばこんな感じです。

ひとつずつ消す
Sub test()
  Application.ScreenUpdating = False
  ActiveSheet.DisplayPageBreaks = False '表示が改ページプレビューなら失敗します。
  '
  For i = 3 To 10000
   If Trim(Cells(i, "a").Value) <> strSTRING Then
     Rows(i).Hidden = True
   End If
  Next
  Application.ScreenUpdating = True
  ActiveSheet.DisplayPageBreaks = True
End Sub

スクリーンの再描画と、不要なSelectをはずすと処理は速くなります。
あとは、
 まとめて消す
 計算をとめる(手動で再計算モード)
などでしょうかね。

まとめてから消す。
Sub test()
  Dim r1 As Range
  Application.ScreenUpdating = False
  ActiveSheet.DisplayPageBreaks = False '表示が改ページプレビューなら失敗します。
  '
  For i = 3 To 10000
   If Trim(Cells(i, "a").Value) <> strSTRING Then
     If r1 Is Nothing Then
      Set r1 = Cells(i, "a")
     Else
      Set r1 = Application.Union(r1, Cells(i, "a"))
     End If
    End If
  Next
  If Not r1 Is Nothing Then r1.EntireRow.Hidden = True
  Application.ScreenUpdating = True
  ActiveSheet.DisplayPageBreaks = True
End Sub

何も入っていない行3〜10000を消した感じだと、上の半分くらいの時間でした。
2 hits

【56530】行を非表示にするときのスピードが遅い あやたろう 08/6/20(金) 1:04 質問
【56531】Re:行を非表示にするときのスピードが遅い りん 08/6/20(金) 7:10 回答
【56569】Re:行を非表示にするときのスピードが遅い あやたろう 08/6/22(日) 9:17 お礼
【56538】Re:行を非表示にするときのスピードが遅い Yuki 08/6/20(金) 10:06 発言
【56570】教えてください m(__)m あやたろう 08/6/22(日) 9:54 質問
【56571】Re:行を非表示にするときのスピードが遅い かみちゃん 08/6/22(日) 10:04 発言
【56572】Re:行を非表示にするときのスピードが遅い あやたろう 08/6/22(日) 11:10 お礼

25539 / 76732 ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free