Excel VBA質問箱 IV

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

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


67460 / 76733 ←次へ | 前へ→

【13828】Re:作成したマクロの実行速度を早くしたいで...
回答  ichinose  - 04/5/14(金) 15:42 -

引用なし
パスワード
   ▼ぐっさん1966 さん:
こんにちは。

>はじめまして
>行の非表示のマクロをWindows XPのExcel2003にて作成しました。
>内容は以下の通りです。
>以下のマクロを実行すると動作が非常に遅いです。
>同じモジュールをWindows2000のExcel2000で動作させると問題ありません。
>ファイルサイズは約10MB程です。マシン自体の性能の問題でもないようです。
>初歩的な質問で大変恐縮ではありますがどうかご教授お願い致します。
>
> Dim i As Long
> Application.ScreenUpdating = False
> For i = 0 To 1000
>  If Range("A1").Offset(i, 0).Value = "" Then
>  Range("A1").Offset(i, 0).Rows.Hidden = True
>  End If
> Next i
> Application.ScreenUpdating = True
Hiddenプロパティの設定って結構時間がかかるんですよねえ・・・。
と言ってもExcel2000では、たいした事なかったですけど。
ループの中で行の非表示をやめて、一括非表示にしたらどうですか?

'==============================================================
Sub main()
Dim i As Long
Dim hidden_rng As Range
Set hidden_rng = Nothing
Application.ScreenUpdating = False
 With Range("a1")
  For i = 0 To 1000
   If .Offset(i, 0).Value = "" Then
     If Not hidden_rng Is Nothing Then
      Set hidden_rng = Union(hidden_rng, .Offset(i, 0))
     Else
      Set hidden_rng = .Offset(i, 0)
      End If
     End If
   Next i
  End With
If Not hidden_rng Is Nothing Then
  hidden_rng.EntireRow.Hidden = True
  End If
Set hidden_rng = Nothing
Application.ScreenUpdating = True
End Sub

Excel2000でも少しは速かったですよ!!

0 hits

【13827】作成したマクロの実行速度を早くしたいで... ぐっさん1966 04/5/14(金) 15:10 質問
【13828】Re:作成したマクロの実行速度を早くしたい... ichinose 04/5/14(金) 15:42 回答
【13829】Re:作成したマクロの実行速度を早くしたい... Jaka 04/5/14(金) 15:45 回答
【13839】ありがとうございました! ぐっさん1966 04/5/14(金) 21:06 お礼

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