|
▼ぐっさん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でも少しは速かったですよ!!
|
|